OpenCV图像从RGB转换为灰度异常

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

Har*_*ris 5

您正在将图像加载为灰度并尝试再次将灰度转换为灰度.

这条线

  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文档中查看更多信息.