opencv2.4.9图像混合问题

热爱橙子和拉面 2016-09-18 01:46:56
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;


int main()
{
Mat girl = imread("girl.jpg");
namedWindow("【1】动漫图");
imshow("【1】动漫图",girl);

Mat image = imread("dota.jpg",199);
Mat logo = imread("dota_logo.jpg");

namedWindow("【2】原画图");
imshow("【2】原画图",image);

namedWindow("【3】logo图");
imshow("【3】logo图",logo);

Mat imageROI; //定义一个感兴趣区域
imageROI = image(Rect(800,350,logo.cols,logo.rows));
// imageROI = image(Range(350,350+logo.rows),Range(800,800+logo.cols));
addWeighted(imageROI,0.5,logo,0.3,0,imageROI);

namedWindow("【4】原图+logo图");
imshow("【4】原图+logo图",image);
imwrite("图片.jpg",image);

waitKey();
return 0;

}

这是毛老师的源码,我只是换了图片而已,却得到了如下























...全文
198 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-09-20
  • 打赏
  • 举报
回复
其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
  • 打赏
  • 举报
回复
是越界了,多谢大虾解释
赵4老师 2016-09-18
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
白衣如花 2016-09-18
  • 打赏
  • 举报
回复
imageROI = image(Rect(800,350,logo.cols,logo.rows));这一句是不是越界了 Rect是起始x,起始y,宽度,高度 你应该是想取(800, 350)这个点右下的部分吧 改成imageROI = image(Rect(800,350,logo.cols - 800,logo.rows - 350));试一下
paschen 2016-09-18
  • 打赏
  • 举报
回复
点那个重试,然后点中断,通过调用堆栈定位出错位置观察分析原因

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧