使用OpenCV显示图像时发生异常

时间:2019-07-18 17:56:23

标签: c++ opencv imshow

我尝试使用OpenCV函数'imshow()'显示图像。

 cv::Mat im = cv::imread("/home/franek/Schreibtisch/image.jpg",cv::IMREAD_GRAYSCALE);
 cv::imshow("original", im);

现在它告诉我:

  

OpenCV错误:cvtColor中的声明失败(scn == 3 || scn == 4),文件/build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/imgproc/src/color.cpp,行9716   抛出'cv :: Exception'实例后终止调用     what():/ build / opencv-L2vuMj / opencv-3.2.0 + dfsg / modules / imgproc / src / color.cpp:9716:错误:(-215)scn == 3 ||函数cvtColor中的scn == 4

当我将cv::IMREAD_GRAYSCALE替换为cv::IMREAD_COLOR时,将显示图片,并且一切正常。但是我需要一个灰度图像。

编辑: 整个代码:

cv::namedWindow("original", cv::WINDOW_GUI_EXPANDED);
  cv::namedWindow("grayScale", cv::WINDOW_GUI_EXPANDED);
  cv::namedWindow("cornerImage", cv::WINDOW_GUI_EXPANDED);
  cv::startWindowThread();

  cv::Mat im = cv::imread("/home/franek/Schreibtisch/image.jpg", cv::IMREAD_COLOR);
  cv::imshow("original", im);
  cv::waitKey(0);
  cv::Mat img = cv::imread("/home/franek/Schreibtisch/image.jpg", cv::IMREAD_GRAYSCALE);
  cv::imshow("grayScale", img);
  cv::waitKey(0);

编辑编辑: 与ldd一起,我发现了依赖性:

  

libopencv_imgcodecs.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2(0x00007f2ba95d0000)       libopencv_imgproc.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2(0x00007f2ba8d77000)       libopencv_core.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2(0x00007f2ba893c000)       libopencv_highgui.so.4.1 => /usr/local/lib/libopencv_highgui.so.4.1(0x00007f2ba8724000)       libopencv_imgcodecs.so.4.1 => /usr/local/lib/libopencv_imgcodecs.so.4.1(0x00007f2ba7e72000)       libopencv_imgproc.so.4.1 => /usr/local/lib/libopencv_imgproc.so.4.1(0x00007f2ba557e000)       libopencv_core.so.4.1 => /usr/local/lib/libopencv_core.so.4.1(0x00007f2ba429b000)

是这种礼物吗?核心和highui版本不同...

2 个答案:

答案 0 :(得分:0)

我找到了解决方案, 问题是,我的代码依赖于< <cv_bridge/cv_bridge.h>中的另一个函数,这是一个 ROS 特定库。 该库使用Opencv 2.3。我开始使用fork,在那里有人将这个库移植到了OpenCV 4 here。现在整个事情都很好!

答案 1 :(得分:0)

如果要使用正确的设置来编译opencv,可以解决您的问题:

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
cd opencv
mkdir build
cd build/
cmake -D CMAKE_BUILD_TYPE=DEBUG -D CMAKE_INSTALL_PREFIX=/opt/opencv -D \ WITH_V4L=ON BUILD_EXAMPLES=ON -D WITH_OPENGL=ON -D \ OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..
make -j4

sudo make install