2015-04-02 103 views
4

我跟踪了OpenCV对象跟踪的this tutorial,并设法使我的笔记本电脑上的代码可以正常工作,这两种情况都使用Visual Studio和Windows在我的Ubuntu VM上(使用CMake)。现在我尝试在我的Raspberry Pi上运行它(运行Raspbian)。 cmake .make命令似乎工作正常,但是当我尝试运行可执行文件,我得到以下错误:openCV错误:Raspberry Pi上的断言失败(scn == 3 || scn == 4)

[email protected] ~/Desktop/Track $ ./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 question和它相似的,但它并没有帮助我解决问题。

这里可用的源代码:

objectTrackingTutorial.cpp

Fruit.cpp

Fruit.h

我听说,这个问题可能是用相机或摄像头驱动程序,所以我尝试使用USB摄像头以及pi相机,我也尝试将capture.open(0);行更改为capture.open("someMovie.mp4");,因此,不要打开直播流,它会运行在一个退出的视频,但它仍然给我同样的错误。

+0

也许试试它预载的图像,你完全确信的大小,格式等。这是因为它可能是以完全意想不到的方式从网络摄像头读取。 – GPPK 2015-04-02 13:55:29

+0

你能更具体吗?你的意思是我应该改变'Capture.open(0);'? – DMEM 2015-04-02 14:11:18

+0

你使用树莓派相机吗? – theoB610 2015-12-15 10:12:37

回答

4

错误表明您要在调用'cvtColor()'级别转换的帧或图像与您在函数中指示的类型不同。 两个可能的原因:

  1. 图像有不同类型的
  2. 或你的框架是空的

尝试改变CV_BGR2HSV到CV_RGB2HSV 或尝试打印从您的凸轮,以检查是否获得图像它是空的或不是。 希望它有帮助

+0

将CV_BGR2HSV更改为CV_RGB2HSV不起作用。你能否详细解释如何从相机打印图像。提醒一下:此代码在我的笔记本电脑(Ubuntu和Windows)上完美运行。这就是为什么我认为这个问题与Pi – DMEM 2015-04-02 17:04:10

+0

从相机打印图像有关,只需使用: if(!image.empty())imshow(“result”,image); 否则继续; – Kacem 2015-04-02 17:07:18

+0

我知道如何打印图片,我问我该如何尝试打印此代码考虑到代码不工作......? – DMEM 2015-04-03 08:45:15

相关问题