opencv中替换图片ROI矩形区域的方法
2016-04-13 10:31
225 查看
Rect roi_rect(20, 20, 40, 40);//用矩形表示出ROI区域
Mat img = Mat::zeros(Size(200, 200), CV_8UC3);//待替换的图片
Mat img_roi = img(roi_rect);//新建一个Mat矩阵头img_roi ,指向 img中的ROI区域的内存
Mat replace_img(Size(40, 40), CV_8UC3, Scalar(255, 255, 255));//用于替换的图片
replace_img.copyTo(img_roi );//用40*40大小的replace_img将img中roi_rect包含的区域替换掉
效果类似于此图 :
初始化一个大的黑色的图片,中间用车牌替换
值得注意的是:
替换的操作我们使用的是replace_img.copyto(img_roi );那如果我这样写img_roi=replace_img.clone();呢?后面这种写法是无法实现替换效果的,因为replace_img.clone()为矩阵头img_roi分配了一段新的内存,img_roi也就不再指向img中的ROI区域了。而replace_img.copyTo(img_roi );copyTo是不给img_roi
分配内存的,只是将replace_img的数据拷贝到img_roi 所指向的内存中。
Mat img = Mat::zeros(Size(200, 200), CV_8UC3);//待替换的图片
Mat img_roi = img(roi_rect);//新建一个Mat矩阵头img_roi ,指向 img中的ROI区域的内存
Mat replace_img(Size(40, 40), CV_8UC3, Scalar(255, 255, 255));//用于替换的图片
replace_img.copyTo(img_roi );//用40*40大小的replace_img将img中roi_rect包含的区域替换掉
效果类似于此图 :
初始化一个大的黑色的图片,中间用车牌替换
值得注意的是:
替换的操作我们使用的是replace_img.copyto(img_roi );那如果我这样写img_roi=replace_img.clone();呢?后面这种写法是无法实现替换效果的,因为replace_img.clone()为矩阵头img_roi分配了一段新的内存,img_roi也就不再指向img中的ROI区域了。而replace_img.copyTo(img_roi );copyTo是不给img_roi
分配内存的,只是将replace_img的数据拷贝到img_roi 所指向的内存中。
相关文章推荐
- Apache Lucene初探
- MVP架构
- Linux kernel内核架构的理解
- linux iptables ip_conntrack: table full CentOS 7 iptables
- Linux命令之pstree - 以树状图显示进程间的关系
- OpenGL ES 绘制 3D 图形
- Hadoop集群性能测试
- AOP这些应用场景(交叉业务)
- linux 安装libpcap
- 在CentOS上编写init.d service script
- Openssl漏洞 注意‘FREAK’ SSL 漏洞
- Linux启动telnet服务,Windows通过telnet远程登录linux服务器
- linux kvm虚拟机使用
- Linux glibc幽灵(GHOST)漏洞检测及修复方案
- Linux YUM或RPM修复 glibc幽灵(GHOST)漏洞
- nginx 的windows 基本配置
- hadoop配置文件说明
- hadoop常见错误及解决方法
- vmware workstation中克隆(clone)CentOS 6的虚拟机网卡无法启动问题
- Windows 2008 开启80端口实现外网访问网站