OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv:: cvtColor, file ........opencvmodulesimgprocsrccolor.cpp, line 3737(OpenCV 错误:断言失败 (scn == 3 || scn == 4) in cv:: cvtColor, file ........opencvmodulesimgprocsrccolor.cpp, line 3737)
问题描述
我正在尝试从 OpenCV 运行此示例代码:
Hi I am trying to run this sample code from OpenCV:
#include "opencv2opencv.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:opencvuildinclude;$(IncludePath)
Linker:General:Additional Library Directories: H:opencvuildx64vc12lib;%(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::Exception0x000000000019A8A0.
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.
当我改为单击 Break(害怕按 Continue)时,会弹出一个名为 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,文件........opencvmodulesimgprocsrccolor.cpp,行3737
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv:: cvtColor, file ........opencvmodulesimgprocsrccolor.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 错误:断言失败 (scn == 3 || scn == 4) in cv:: cvtColor, file ........opencvmodulesimgprocsrccolor.cpp, line 3737的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:OpenCV 错误:断言失败 (scn == 3 || scn == 4) in cv:: cvtColor, file ........opencvmodulesimgprocsrccolor.cpp, line 3737
基础教程推荐
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 从 std::cin 读取密码 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 为什么语句不能出现在命名空间范围内? 2021-01-01