c++和OpenCV:问题转换图像到灰度

C++ and OpenCV: Issue Converting Image to grayscale

本文关键字:图像 灰度 转换 问题 OpenCV c++      更新时间:2023-10-16

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

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);

试试这个。