OpenCV中Mat创建的图像和copyto的问题

sy95122 2017-12-01 05:57:21
今天遇到一个问题,描述如下

1.Mat创建一个图像dst_img
2.在dst_img里画了两个矩形滚动条
3.img里的某个区域A(比dst_img小)复制到dst_img中
发现滚动条不见了,dst_img的大小变成了区域A的大小,感觉用Mat创建的变量和用imread读出来不一样,申请的变量,图像头不完整,用copyto的时候会直接改变尺寸
请大神给分析解决一下

简单代码如下:
int winWidth = 800;
int winHeight = 600;
Mat dst_img(Size(winWidth, winHeight), img.depth());//申请时dst_img大小为800*600
Rect rect(0, 0, 780, 580);
img(rect).copyTo(dst_img);//这条执行完后,dst_img大小为780*580
...全文
763 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sy95122 2017-12-04
  • 打赏
  • 举报
回复
感谢楼上的回复 自己找到了解决方法,记录在我的博客里http://blog.csdn.net/sy95122/article/details/78707107
jsxyhelu2015 2017-12-02
  • 打赏
  • 举报
回复
jsxyhelu2015 2017-12-02
  • 打赏
  • 举报
回复
你好,copyto肯定只能copy两个同样的mat,如果想实现你的效果,可以采用mask
比如

i
nt main()
{
Mat matSrc = imread("e:/template/lena.jpg");
Mat matDst;

Mat matMask(matSrc.size(),CV_8UC1,Scalar(0));
Rect rect(0, 0, 100, 100);
//绘制mask
rectangle(matMask,rect,Scalar(255),-1);
//带有mask的copyto
matSrc.copyTo(matDst,matMask);

waitKey();
return 0;

};


结果图片:

19,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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