这是我的代码。这很简单。
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
答案 0 :(得分:6)
方法convertTo
不进行颜色转换。
如果您想从BGR转换为GRAY,可以使用函数cvtColor:
Mat image_gray;
cvtColor(image, image_gray, CV_BGR2GRAY);
答案 1 :(得分:0)
函数cv::Mat::convertTo
不适用于颜色转换。它用于类型转换。目标图像应具有与源图像相同的大小和通道数。
要从RGB转换为灰色,请使用函数cv::cvtColor
。
cv::cvtColor(image,image_gray,CV_RGB2GRAY);
答案 2 :(得分:0)
如果您需要以灰度方式获取视频(例如,从网络摄像头获取),您还可以将视频输入的饱和度设置为零。 (例如Python语法)
capture = cv.CaptureFromCAM(camera_index)
...
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_SATURATION,0)
答案 3 :(得分:0)
image.convertTo(image_gray,CV_RGB2GRAY); 这是错的。正确的是,
2.5 - 3
试试这个。