今天做的东西用到了Opencv的几个功能,下面对他们依次进行总结。
(1)Opencv对感兴趣区域的复制
具体是这样的,我想把两张图像进行拼接成一幅图像,很容易想象到的方法就是先创建一幅大的图像(高度为两张原图高度的较大者,宽度为两张原图宽度之和),然后把两张图像内容分别复制到这张大图的对应区域即可。
很容易想到用Opencv的ROI方法。
网上很多的总结方法都是用Opencv的C风格的代码,用的是IplImage,但是我用的是C++风格的,代码并不兼容,查了一段时间找到了解决方案,具体代码如下:
void SIFTFeature::imageJoin(cv::Mat &src1, cv::Mat &src2, cv::Mat &dest)
{
cv::Rect roi1 = cv::Rect(0, 0, src1.cols, src1.rows);
cv::Mat matchImage1 = dest(roi1);
src1.convertTo(matchImage1, matchImage1.type());
cv::Rect roi2 = cv::Rect(src1.cols, 0, src2.cols, src2.rows);
cv::Mat matchImage2 = dest(roi2);
src2.convertTo(matchImage2, matchImage2.type());
}
这是我做的东西的其中一个函数,很显然,src1和src2是原图,dest是拼接好的大图。
首先选择一个感兴趣的矩形区域,然后选中目的图像的该部分区域&#