C++ OpenCV裁剪图片时发生报错的解决方式

目录
  • 从相机获取图像时直接处理会报错,读取本地视频不会报错
  • 对本地视频进行裁剪不会报错,对相机实时获取的帧进行裁剪会报错
  • 总结

从相机获取图像时直接处理会报错,读取本地视频不会报错

原代码

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裁剪图片报错内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于OpenCV和C++ 实现图片旋转

    图片旋转,本质上是对旋转后的图片中每个像素点计算在原图的位置.然后照搬过来就好. (多说一句,如果计算出来在原图中的位置不是整数而是小数,因为像素点个数都是整数,就需要小数到整数的转换.这个转换过程是有讲究的,需要用到插值:最近邻插值.双线性插值等等.这里我使用的是最简单的最近邻插值,即对小数四舍五入成整数,C/C++ 实现四舍五入见 这里 ) 图形图像课上一般会介绍旋转变换矩阵,其中 t 为需要旋转的角度,[x'; y']是变换后坐标(其中分号表示上下关系): 即表示为:[x'; y'] =

  • OpenCV和C++实现图像的翻转(镜像)、平移、旋转、仿射与透视变换

    目录 一.翻转(镜像) 二.仿射扭曲 获取变换矩阵 仿射扭曲函数 warpAffine 旋转 平移 三.仿射变换 四.透视变换 综合示例 总结 官网教程 一.翻转(镜像) 头文件 quick_opencv.h:声明类与公共函数 #pragma once #include <opencv2\opencv.hpp> using namespace cv; class QuickDemo { public: ... void flip_Demo(Mat& image); void rotat

  • opencv3/C++图像像素操作详解

    RGB图像转灰度图 RGB图像转换为灰度图时通常使用: 进行转换,以下尝试通过其他对图像像素操作的方式将RGB图像转换为灰度图像. #include<opencv2/opencv.hpp> #include<math.h> using namespace cv; int main() { //像素操作 Mat src,dst; src = imread("E:/image/image/daibola.jpg"); if(src.empty()) { printf

  • opencv3/C++图像边缘提取方式

    canny算子实现 使用track bar 调整canny算子参数,提取到合适的图像边缘. #include<iostream> #include<opencv2/opencv.hpp> using namespace cv; void trackBar(int, void*); int s1=0,s2=0; Mat src, dst; int main() { src = imread("E:/image/image/daibola.jpg"); if(src

  • C++ OpenCV裁剪图片时发生报错的解决方式

    目录 从相机获取图像时直接处理会报错,读取本地视频不会报错 对本地视频进行裁剪不会报错,对相机实时获取的帧进行裁剪会报错 总结 从相机获取图像时直接处理会报错,读取本地视频不会报错 原代码 g_mvCamera.GetImage(m_matCameraFrame); //开始OCR OCRImg(); 将从相机捕获的帧直接imwrite进本地,再在OCR中imread读取本地路径下的图片,报错消失 g_mvCamera.GetImage(m_matCameraFrame); imwrite("i

  • vue 项目打包时样式及背景图片路径找不到的解决方式

    问题描述:vue项目打包后,文件找得到,但是引用的字体及背景图片找不到: 解决方法: 主要是需要单独为 css 配置 publicPath . ExtractTextWebpackPlugin 提供了一个 options.publicPath 的 api,可以为css单独配置 publicPath . 对于用 vue-cli 生成的项目,dist 目录结构如下: dist ├── index.html └── static     ├── css     ├── img     └── js 经

  • vue使用prop可以渲染但是打印台报错的解决方式

    vue属性传递时有时会报下述错误 vue.esm.js?f959:610 [Vue warn]: Error in render: "TypeError: Cannot read property 'RegistrationAuthority' of undefined" found in ---> <DialogHistory> at src/components/tools/dialog_history.vue <NurseInfor> at src/

  • 关于Tensorflow使用CPU报错的解决方式

    如下所示,简单明了,希望能帮助到你 解决: Operation was explicitly assigned to /device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/cpu:0 ]. tf.app.Flags.DEFINE_boolean('clone_on_cpu',False,'use CPUs to deploy clones.') 改为: tf.app.Flags.DEFINE_boole

  • 基于spring boot 日志(logback)报错的解决方式

    记录一次报错解决方法: No converter found capable of converting from type [java.lang.String] to type [java.util.Map<java.lang.String, java.lang.String>] org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'logging.le

  • git pull时冲突的几种解决方式(小结)

    仅结合本人使用场景,方法可能不是最优的 1. 忽略本地修改,强制拉取远程到本地 主要是项目中的文档目录,看的时候可能多了些标注,现在远程文档更新,本地的版本已无用,可以强拉 git fetch --all git reset --hard origin/dev git pull 关于commit和pull的先后顺序,commit-->pull-->push 和 pull-->commit-->push的顺序,两种情况都遇到过代码冲突.解决方法如下: 2. 未commit先pull,

  • vue-cli3访问public文件夹静态资源报错的解决方式

    今天在项目中使用了public文件夹里的静态资源,在本地测试没有发现问题,但是项目部署到fat服务器却报了404错误. 我发现原因在于我的项目没有部署在域名的根部,而我引用public文件是通过绝对路径方式引用的,因为就出现了路径错误. 路径如下: <img :src="`/image1.png`"> 在官网文档中发现这种情况需要为 URL 配置 publicPath 前缀:process.env.BASE_URL 正确的引用路径是: <img :src="

  • springboot集成springCloud中gateway时启动报错的解决

    在项目中引入springcloud中的gateway时报以下错误 Description: Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.cloud.gateway.config.GatewayAutoConfiguration required a bean of type 'org.springframework.http.codec.ServerCodecConfigur

  • SpringBoot项目打包war包时无法运行问题的解决方式

    目录 序 SpringBoot项目打包 jar 包 和 tomcat 包 实际问题及解决方式 问题 解决方法 end 序 现实的情况下遇见过该问题刚好记录一下! SpringBoot项目打包 首先默认创建的maven springBoot项目进行代码的clean 和 install进行项目打包的时候默认是使用jar 包的形式进行打包的,如果需要进行war 包打包部署的话就需要修改相应的 数据内容了 jar 包 和 tomcat 包 jar 包打完之后进行部署的时候使用 java -jar 的启动

  • 新建springboot项目时,entityManagerFactory报错的解决

    目录 新建springboot项目entityManagerFactory报错 解决办法 spring生成EntityManagerFactory三种方式 1.LocalEntityManagerFactoryBean 2.从JNDI获取EntityManagerFactory 3.LocalContainerEntityManagerFactoryBean 新建springboot项目entityManagerFactory报错 解决办法 1.查看注解引入是否正确,实体类和jpa的. 2.检查

随机推荐