OpenCV错误:cv :: cvtColor,文件.. \ .. \ .. \ .. \ opencv \ modules \ imgproc \ src \ color.cpp,第3737行中的断言失败(scn == 3 || scn == 4) [英] OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv:: cvtColor, file ..\..\..\..\opencv\modules\imgproc\src\color.cpp, line 3737
问题描述
我正在尝试从OpenCV运行以下示例代码:
Hi I am trying to run this sample code from OpenCV:
#include "opencv2\opencv.hpp"
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if (!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges", 1);
for (;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if (waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
我当前在Macbook Pro上使用Windows 7 x64 BootCamp.我正在Visual Studios 2013和OpenCV 2.4.9中运行此代码.
I am currently using a Windows 7 x64 BootCamp on a Macbook Pro. I'm running this code with Visual Studios 2013 and OpenCV 2.4.9.
这是我设置配置属性的方式:
This is how I've set up my Config Properties:
VC++ Directories: Include Directories: H:\opencv\build\include;$(IncludePath)
Linker:General:Additional Library Directories: H:\opencv\build\x64\vc12\lib;%(AdditionalLibraryDirectories)
Linker:Input:Additional Dependencies: opencv_calib3d249.lib;opencv_contrib249.lib;opencv_core249.lib;opencv_features2d249.lib;opencv_flann249.lib;opencv_gpu249.lib;opencv_highgui249.lib;opencv_imgproc249.lib;opencv_legacy249.lib;opencv_ml249.lib;opencv_nonfree249.lib;opencv_objdetect249.lib;opencv_ocl249.lib;opencv_photo249.lib;opencv_stitching249.lib;opencv_superres249.lib;opencv_ts249.lib;opencv_video249.lib;opencv_videostab249.lib;%(AdditionalDependencies)
当我在Release x64模式下单击本地Windows调试器"时,我从Visual Studios中收到以下错误:
When I click on Local Windows Debugger in Release x64 mode I get the following error from Visual Studios:
Project3.exe中0x000007FEFD21B3DD的第一次机会异常: Microsoft C ++异常:内存位置的cv :: Exception 0x000000000019A8A0.
First-chance exception at 0x000007FEFD21B3DD in Project3.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000019A8A0.
如果有用于此异常的处理程序,则该程序可能是安全的 继续.
If there is a handler for this exception, the program may be safely continued.
当我单击中断"时(消失后按继续"),会弹出一个名为Edges的窗口,并且由于绿色指示灯会亮起,因此相机也会打开.但是我在命令窗口中也收到以下错误:
When I click Break instead (scared to press Continue), a window named Edges does pop up and the camera does turn on since the green light turns on. But I also get the following error in the command window:
OpenCV错误:在cv中断言失败(scn == 3 || scn == 4): cvtColor,文件........ \ opencv \ modules \ imgproc \ src \ color.cpp,行 3737
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv:: cvtColor, file ........\opencv\modules\imgproc\src\color.cpp, line 3737
我对C ++和Visual Studios还是很陌生,任何帮助将不胜感激.提前致谢!
I'm pretty new to C++ and Visual Studios, any help would be appreciated. Thanks in advance!
推荐答案
从注释中的对话到问题,我们看到VideoCapture
给出了灰度框架.因此,对cvtColor
的调用导致了崩溃.
From the conversation in the comments to the question, we saw that VideoCapture
gives frame in grayscale. So the call to cvtColor
caused the crash.
...
Mat frame;
cap >> frame; // frame is already CV_8UC1
//cvtColor(frame, edges, CV_BGR2GRAY); // so don't to convert here, or crash!
edges = frame.clone();
...
这篇关于OpenCV错误:cv :: cvtColor,文件.. \ .. \ .. \ .. \ opencv \ modules \ imgproc \ src \ color.cpp,第3737行中的断言失败(scn == 3 || scn == 4)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!