OpenCV报错: cv::Exception,位于内存位置 0x00000078226FEE58 处。

场景:

通过对前面Mat类、imread函数、imshow函数、imwrite函数等的学习,写一个综合项目:把一张logo的图片嵌入到另一张图片中。


问题描述

当我运行的时候:

报出这样的错误,并且自动跳转到mat.inl.hpp这个源码中

0x00007FFF663E4FD9(位于 OC.exe 中)引发的异常: 
Microsoft C++ 异常: cv::Exception,
位于内存位置 0x00000078226FEE58 处。

在这里插入图片描述


原因分析:

1、首先我就去百度,查看是不是Mat类的用法错误,就去百度了解了一下:

参考,不过对于小白的我看不懂,就又去百度其他的
roi了解

在这里插入图片描述
2、我就开始对源码就行一点一点的运行,发现到这行代码就会报错

imageROI = image(Rect(800, 350, logo.cols, logo.rows));

这我当初就纳闷了,明明是看着书写的,怎么会错呢,于是乎我就百度一下,看了一下这个【博主】,按照他的意思就是Rect的矩形坐标设置太大了,logo图跑出去了,下面Rect的具体用法。

Rect(INT,INT,INT,INT):创建一个矩形对象,通过使用四个整数来初始化矩形左上角的横坐标、纵坐标以及右下角的横坐标、纵坐标(不要弄反)(cocos2d中的rect参数是(x, y, width, height),第三第四个参数分别是矩形的宽和高)

这个时候把坐标改一下,我改成如下:

imageROI = image(Rect(300, 10, logo.cols, logo.rows));

3、不过这里还有一个Bug,我参考了另一个【博主】,这个参数如果写199,会把原图缩小很多,同样会造成logo图片超出区域。把它改成1或者不写就可以了。

Mat image = imread("D:\\dota.jpg",199);

成功实现:

在这里插入图片描述


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我菜就爱学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值