这是我的代码。这很简单。
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
copencvmodulescoresrcconvert.cpp, line 1020
使用OpenCV 2.4.3
方法convertTo
不进行颜色转换。
如果你想从BGR转换为GRAY,你可以使用函数cvtColor:
Mat image_gray;
cvtColor(image, image_gray, CV_BGR2GRAY);
cv::Mat::convertTo
函数不是用于颜色转换的。它用于类型转换。目标图像应具有与源图像相同的大小和通道数。
使用cv::cvtColor
函数将RGB转换为灰色。
cv::cvtColor(image,image_gray,CV_RGB2GRAY);
如果您需要在灰度中获取视频(例如从网络摄像头),您还可以将视频馈电的饱和度设置为零。(Python语法示例)
capture = cv.CaptureFromCAM(camera_index)
...
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_SATURATION,0)
image。convertTo (image_gray CV_RGB2GRAY); 这是错误的。正确的是
Mat gray_image;
cvtColor(image, gray_image, CV_BGR2GRAY);
试试这个。