在图像处理领域,常常需要设置感兴趣区域来专注或者简化工作过程,也就是从图像中选择一个图像区域,这个区域是图像分析所关注的重点。
定义ROI区域有两种方法:
Mat imageROI; //方法一 //前两个参数是相对于原图像的坐标,后两个参数是ROI区域的宽和高 imageROI = image(Rect(pos_left,pos_top,logo.cols,logo.rows)); //方法二 //指定行和列的范围来定义ROI imageROI = image(Range(250,250+logo.rows),Range(200,200+logo.cols));
示例:
用于叠加的2张图片如下:


#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src_image = imread("美女.jpg");
Mat logo_image = imread("logo.png");
if (!src_image.data || !logo_image.data)
{
cout << "读取图片失败" << endl;
return 1;
}
int xpos = src_image.cols / 2 - logo_image.cols / 2;
int ypos = src_image.rows / 2 - logo_image.rows / 2;
Mat roi_image = src_image(Rect(xpos, ypos, logo_image.cols, logo_image.rows));
Mat mask = imread("logo.png", 0);
logo_image.copyTo(roi_image, mask);
imshow("图片叠加示例", src_image);
waitKey(0);
return 0;
}
本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:



少有人走的路


















