-1 opencv
当我尝试将RGB图像转换为灰度时,我得到一个奇怪的异常(异常:在内存位置0x002EB6CC处的cv :: Exception).有人能帮我吗?
const cv::Mat img1 = cv::imread(filename, 0)
cv::Mat gs_rgb(img1.size(), CV_8UC1);
cv::cvtColor(img1, gs_rgb, CV_RGB2GRAY);
Run Code Online (Sandbox Code Playgroud)
您正在将图像加载为灰度并尝试再次将灰度转换为灰度.
这条线
const cv::Mat img1 = cv::imread(filename, 0)
Run Code Online (Sandbox Code Playgroud)
将加载图像
第二个参数在哪里
=0->CV_LOAD_IMAGE_GRAYSCALE->load gray scale
=1->CV_LOAD_IMAGE_COLOR->load color
<0->CV_LOAD_IMAGE_ANYDEPTH->Return the loaded image as is (with alpha channel).
Run Code Online (Sandbox Code Playgroud)
所以要么将图像加载为灰度并使用它,
const cv::Mat img1 = cv::imread(filename, 0)//load gray
Run Code Online (Sandbox Code Playgroud)
或者将其加载为颜色,然后转换为灰度,如,
const cv::Mat img1 = cv::imread(filename, 1);//load color
Mat gray;//no need of allocation, will allocate automatically.
cv::cvtColor(img1,gray, CV_BGR2GRAY);//opencv default color order is BGR
Run Code Online (Sandbox Code Playgroud)
在imread文档中查看更多信息.