0

我在 Windows 上使用 Visual Studio 和 Ubuntu VM(使用 CMake)在我的笔记本电脑上运行OpenCV 代码。该代码在两者上都运行良好,但是当我尝试在我的 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

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

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

4

2 回答 2

2

它看起来确实好像图像是空的。图像捕获函数返回一个布尔值,可以检查该布尔值是否成功完成捕获并返回一个有效图像。您也可以尝试 printf 或 cout 图像的宽度/高度。它应该是非零的。

于 2015-04-03T20:01:52.453 回答
0

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

于 2015-04-05T13:46:56.350 回答