定义ROI区域有两种方法:
第一种:使用表示矩形区域的Rect。指定矩形的左上角坐标(构造函数的前两个参数)和矩形的长宽(构造函数的后两个参数)。
imageROI = image(Rect(500, 250, logo.cols, logo.rows));
opencv快速入门?第二种:指定感兴趣行或列的范围(Range)。Range是从起始索引到终止索引(不包括终止索引)的一连续序列。CRange可以用来定义Range。
imageROI = image(Range(250, 250+logoImage.rows), Range(200, 200+logoImage.cols));
下边用一个例子来说明ROI的用法。例子是利用ROI将一幅图加到另一幅图的指定位置。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>using namespace cv;
using namespace std;void main(){//读入图像并显示图像Mat srcImage = imread("dota_pa.jpg");Mat logoImage = imread("dota_logo.jpg");if (!srcImage.data)cout << "读取srcImage错误!" << endl;imshow("dota_pa原始图", srcImage);if (!logoImage.data)cout << "读取logoImage错误!"<< endl;imshow("dota_logo原始图",logoImage);//定义一个Mat类型并给其设定ROI区域Mat imageROI = srcImage(Rect((srcImage.cols - logoImage.cols), (srcImage.rows - logoImage.rows), logoImage.cols, logoImage.rows));//加载掩模板(灰度图就可以)Mat mask = imread("dota_logo.jpg", 0);//将掩膜复制到ROIlogoImage.copyTo(imageROI, mask);//显示结果namedWindow("<1>利用ROI实现图像叠加实例窗口");imshow("<1>利用ROI实现图像叠加实例窗口", srcImage);waitKey(0);
}
运行结果:
opencv roi,上述代码关于copyTo函数的用法,可参考博文OpenCV中copyTo()函数及Mask详解(附代码详解)
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态