Opencv 圖片ROI與圖片融合
轉:http://klqulei23.blog.163.com/blog/static/1323153372013102021740641/
(1)如何ROI
#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
//namedWindow("main");
Mat srcImage = imread("../opencv_ROI_test/test.jpg");
Mat intrImage= imread("../opencv_ROI_test/2x2.png");
// 保存一個ROI圖像區域
cv::Mat roiImage;
cv::Rect rect(0, 0, intrImage.cols, intrImage.rows);
//srcImage(rect).copyTo(roiImage);//重新分配內存,如果矩陣roiImage的大小或數據類型與srcImage(rect)不一樣,那么在copyTo函數內部會先給imageROI重新分配內存
roiImage=srcImage(rect);//不重新分配內存,公用內存
cv::addWeighted(roiImage,1.0,intrImage,0.3,0.,roiImage); //intrImage(rect).copyTo(srcImage(rect));
cv::imshow("main", srcImage);
cv::imshow("roi", roiImage);
cv::imshow("intr", intrImage);
cv::waitKey(0);
return 0;
}
//srcImage(rect).copyTo(roiImage);//重新分配內存,如果矩陣roiImage的大小或數據類型與srcImage(rect)不一樣,那么在copyTo函數內部會先給imageROI重新分配內存
roiImage=srcImage(rect);//不重新分配內存,公用內存
srcImage(rect).copyTo(roiImage);
的結果如下(由於重新分配內存,所以原圖srcImage沒有變化):
roiImage=srcImage(rect);
的結果如下(由於公有內存,所以原圖srcImage也變化):