C++ openCV错误:对Raspberry Pi的断言失败(scn==3 | | scn==4)

C++ openCV错误:对Raspberry Pi的断言失败(scn==3 | | scn==4),c++,opencv,raspberry-pi,C++,Opencv,Raspberry Pi,我一直在关注OpenCV对象跟踪,并设法使代码在我的笔记本电脑上工作,无论是在使用Visual Studio的Windows上还是在我的Ubuntu虚拟机上(使用CMake)。现在我试着在我的树莓皮上运行它cmake。和make命令似乎可以正常工作,但当我尝试运行可执行文件时,出现以下错误: pi@raspberrypi ~/Desktop/Track $ ./TrackObj init done opengl support available OpenCV Error: Asserti

我一直在关注OpenCV对象跟踪,并设法使代码在我的笔记本电脑上工作,无论是在使用Visual Studio的Windows上还是在我的Ubuntu虚拟机上(使用CMake)。现在我试着在我的树莓皮上运行它
cmake。
make
命令似乎可以正常工作,但当我尝试运行可执行文件时,出现以下错误:

pi@raspberrypi ~/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
我已经看过并类似于它,但它并没有帮助我解决这个问题

此处提供的源代码:


我听说问题可能出在摄像头或摄像头驱动程序上,因此我尝试使用usb摄像头和pi摄像头,并尝试更改线路
capture.open(0)
捕获.打开(“someMovie.mp4”)因此,它将在退出的视频上运行,而不是打开一个实时流,但它仍然会给我相同的错误。

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

  • 图像有不同的类型
  • 或者你的相框是空的
  • 尝试将CV_BGR2HSV更改为CV_RGB2HSV 或者试着打印你从你的摄像机得到的图像,检查它是否为空。
    希望它有帮助

    也许可以使用预加载的图像进行尝试。您完全确定图像的大小、格式等。这是因为它可能以一种完全出乎意料的方式从网络摄像头读取。您能更具体一些吗?你的意思是我应该更改
    Capture.open(0)?您使用的是Raspberry Pi摄像头吗?可能该程序期望得到一个无法获取的参数。由于这个原因,我看到了类似的错误。将CV_BGR2HSV更改为CV_RGB2HSV不起作用。你能更详细地解释一下如何从相机上打印图像吗。提醒一下:这段代码在我的笔记本电脑(Ubuntu和Windows)上运行得非常好。这就是为什么我认为这个问题与来自相机的Pito打印图像有关,只需使用:if(!image.empty())imshow(“result”,image);否则继续;我知道如何打印图片,我在问,考虑到代码不起作用,我应该如何尝试在这个代码中打印。。。?