C++ / CannyEdgeDetection.exe 已停止工作 代码块 /OpenCV 错误:断言失败
C++ / CannyEdgeDetection.exe has stop working Codeblocks /OpenCV Error: Assertion failed
我的精明边缘样本有一个大问题。几天前它正在工作,但最近我不知道为什么,当我使用读取我的网络摄像头的程序时,它不起作用。
这就是问题所在
这是我的样本:
using namespace cv;
using namespace std;
int main()
{
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;
}
return 0;
}
我真的不知道发生了什么,因为我使用相同的样本,但它决定停止工作。
该断言检查您对cvtColor
的输入是否包含 3 或 4 个通道。相机未恢复数据,在这种情况下cout << frame.size();
应将[0 x 0]
打印到主机上,或者相机未生成 BGR 图像。您可以通过拨打frame.channels()
来检查频道数。
如果frame.size()
返回[0 x 0]
,则您的相机要么作系统禁用,要么被其他程序使用,要么与OpenCV存在兼容性问题。您应该检查它是否与其他程序一起使用。
否则,如果您的频道数为 1,则意味着您的相机已经获得灰色图像,您应该省略转换。我不认为 OpenCV 支持其他通道数的捕获方法,但我可能是错的。
相关文章:
- 如何修复"未定义的引用"错误 opencv 和 g++
- 链接错误 Opencv Qt '_ZN2cv6String10deallocateEv
- 错误 opencv 错误断言失败 (p [-1] <= 2) 是什么意思以及如何处理它?
- 错误:OpenCV 3.4.0 CUDA ORB 功能检测
- 调试断言错误-OpenCV
- 在 Ubuntu 中选择超时错误 - Opencv
- 内存不足错误Opencv/c++
- 'Corrupted double-linked list'内存错误 - OpenCV-Python 3.0.0 和 ARM 上的 Numpy
- 链接错误 OpenCV 仅在使用 -wl,-rpath,/usr/local/MATLAB/R2014b/bin/gln
- 人脸跟踪错误 Opencv
- 致命错误:opencv/cvtypes.h:没有终止此类文件或目录编译
- Sobel 边缘检测错误(OpenCV 错误:断言失败 (DIMS<=2&&Data&&(无符号)i0)
- 我正在尝试将灰度转换为更大的黑色图像.我得到这个错误OpenCV错误:断言失败
- 分段错误 - OpenCV 和 Qt in Netbeans on Ubuntu
- Visual Studio 2013中C++中的VideoCapture错误OpenCV 3.0.0
- 如何修复内存不足错误(openCV)
- 错误 OpenCV 在 C++ 中支持 CUDA
- 图像轮廓检测错误:OpenCV,C++
- c++分割错误OpenCV
- 编译错误opencv