OpenCV:cvtColor 函数在 Raspberry Pi 上导致错误

OpenCV: cvtColor function cause error on Raspberry Pi

我正在 运行我的笔记本电脑上 Windows 使用 Visual Studio 和 Ubuntu 虚拟机(使用 CMake)安装 OpenCV code。该代码在两者上都运行良好,但是当我尝试在我的 Raspberry Pi 2B 上 运行 时,函数 cvtColor() (第 205 行)导致以下错误:

pi@raspberrypi ~/Desktop/Track1 $ ./TrackObj 
init done 
opengl support available 
OpenCV Error: Assertion failed ((scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F)) in cvtColor, file /home/pi/opencv-2.4.10/modules/imgproc/src/color.cpp, line 3961
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/pi/opencv-2.4.10/modules/imgproc/src/color.cpp:3961: error: (-215) (scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F) in function cvtColor

Aborted

我看到了尝试检查框架是否为空的建议,但鉴于它不是 运行ning,我不确定如何在 this code 中执行此操作。

我也尝试将输入从 camera.open(0); 更改为 camera.open("someMovieInFolder.mp4");,但问题仍然存在。

看起来图像确实是空的。可以检查图像捕获函数 returns a boolean value 以查看捕获是否成功完成并返回有效图像。您也可以尝试 printf 或 cout 图像的 width/height 。它应该是非零的。

好的,我知道了。事实上,问题在于图像是空的,这就是导致 运行-time 错误的原因。 原因是 Pi 相机。不幸的是,此功能不适用于 Pi cam(或至少需要进行一些调整),因此插入 USB 摄像头后一切正常。