在图像处理中,经常需要在图像的指定区域替换成另一幅图像,如何通过opencv实现这种效果呢?下面就让我们进行具体介绍。
实现这个功能简单分为两个步骤:1、首先在图像中设置ROI(region of interest,目标区域),2、在该区域填充目标图像。
有了思路,我们的主要工作就是考虑如何把它们转化成机器语言。
让我们看看下面的一段代码代码:
#include <opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; void main() { //读取待填充图像, Mat image = imread("lena.jpg"); imshow("原始图", image); //读取待复制图片 Mat roi =imread("cat_face.jpg"); imshow("roi", roi); Mat dst; //缩放图像 resize(roi, dst, Size(120, 150), 0, 0, CV_INTER_LINEAR); //设置绘制区域并复制 Rect roi_rect = Rect(230, 100, dst.cols, dst.rows); dst.copyTo(image(roi_rect)); imshow("result", image); waitKey(); } Rect roi_rect = Rect(230, 100, dst.cols, dst.rows);该行程序作用是设置在待填充图像的填充区域以及填充大小,(230,100)表示填充起始坐标,dst.cols, dst.rows表示填充区域的高和宽。
dst.copyTo(image(roi_rect))是把填充图像复制到待填充区域中。这样我们就完成了在图像指定区域填充目标图像。
实现结果如下:
天学习一点点,每天进步一点点,坚持才会更优秀!!!!
“动动手指扫码或微信搜一搜关注哟”