3

这是我的代码。这很简单。

Mat image  = imread("filename.png");

imshow("image", image);
waitKey();

//Image looks great.

Mat image_gray;
image.convertTo(image_gray, CV_RGB2GRAY);

imshow("image", image_gray);
waitKey();

但是当我拨打该image.convertTo(image_gray, CV_RGB2GRAY);线路时,我收到以下错误消息:

OpenCV Error: Assertion failed (func != 0) in unknown function, file ..\..\..\sr
c\opencv\modules\core\src\convert.cpp, line 1020

使用 OpenCV 2.4.3

4

4 回答 4

7

该方法convertTo不进行颜色转换。

如果要从 BGR 转换为 GREY,可以使用函数cvtColor

Mat image_gray;
cvtColor(image, image_gray, CV_BGR2GRAY);
于 2013-01-20T17:51:08.857 回答
0

该功能cv::Mat::convertTo不适用于颜色转换。它用于类型转换。目标图像应具有与源图像相同的大小和通道数。

要将 RGB 转换为灰色,请使用函数cv::cvtColor.

cv::cvtColor(image,image_gray,CV_RGB2GRAY);
于 2013-01-20T17:51:11.900 回答
0

如果您需要以灰度方式获取视频(例如来自网络摄像头),您还可以将视频源的饱和度设置为零。(例如在 Python 语法中)

 capture = cv.CaptureFromCAM(camera_index) 

... cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_SATURATION,0)

于 2013-02-06T02:18:42.223 回答
0

image.convertTo(image_gray, CV_RGB2GRAY); 这是错误的。正确的是,

 Mat gray_image;
 cvtColor(image, gray_image, CV_BGR2GRAY);

试试这个。

于 2017-09-21T04:47:15.750 回答