C++ OpenCV裁剪图片时发生报错的解决方式
短信预约 -IT技能 免费直播动态提醒
从相机获取图像时直接处理会报错,读取本地视频不会报错
原代码
g_mvCamera.GetImage(m_matCameraFrame);
//开始OCR
OCRImg();
将从相机捕获的帧直接imwrite进本地,再在OCR中imread读取本地路径下的图片,报错消失
g_mvCamera.GetImage(m_matCameraFrame);
imwrite("img6.bmp", m_matCameraFrame);
//开始OCR
OCRImg();
对本地视频进行裁剪不会报错,对相机实时获取的帧进行裁剪会报错
原代码(部分)
g_mvCamera.GetImage(frame0);
//对视频进行区域截取,选其中一部分进行处理,左上角起始坐标以及整个新图片的大小
Rect rect;
rect.x = 0;
rect.y = 260;
rect.height = 680;
rect.width = 1260;
frame = Mat(frame0, rect);
运行结果
仔细看一下变量窗口, 会发现是由于有时候程序并没从相机中获取到frame就对frame0进行传值,就直接报错了
所以修改代码,使用do while循环,确保frame0获取到之后,再进行下一步处理
do {
g_mvCamera.GetImage(frame0);
} while (frame0.empty());
//对视频进行区域截取,选其中一部分进行处理,左上角起始坐标以及整个新图片的大小
Rect rect;
rect.x = 0;
rect.y = 260;
rect.height = 680;
rect.width = 1260;
frame = Mat(frame0, rect);
总结
到此这篇关于C++ OpenCV裁剪图片时发生报错的文章就介绍到这了,更多相关C++ OpenCV裁剪图片报错内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341