2015-04-03 199 views
0

我在我的笔记本电脑上使用Visual Studio和Ubuntu VM(使用CMake)在Windows上运行OpenCV code。代码工作在两个完全正常,但是当我尝试在我的树莓派2B运行,功能cvtColor()(线205),会导致以下错误:OpenCV:树莓派上的cvtColor函数导致错误

[email protected] ~/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 

我见过的建议,试图检查该框架是空的,但我不知道如何在this code中做到这一点,因为它没有运行。

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

回答

0

好吧,我明白了。事实上,问题在于图像是空的,这就是导致运行时错误的原因。 原因是Pi相机。不幸的是,这个功能并不适用于Pi摄像头(或者至少需要进行某些调整),因此在插入USB摄像头之后,这一切都很完美。

+0

我通过安装可用的V4L驱动程序[这里](http://www.linux-projects.org/modules/sections/index.php?op=viewarticle&artid=14)让我的工作。 – mkr 2015-04-07 20:21:43

2

它确实看起来好像图像是空的。可以检查图像捕获功能returns a boolean value以查看捕获是否成功完成并返回了vaild图像。你也可以尝试printf或cout图像的宽度/高度。它应该是非零的。