您的位置:首页 > 运维架构

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 所指向的内存中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: