opencv 将两张图片显示到一幅图片中
轉自:http://hi.baidu.com/cmkyec/blog/item/2f8a912283179cfed6cae264.html
?利用opencv處理圖片后,希望將處理后的圖片和處理前的圖片顯示在一起,以方便看出兩者之間的差別。
?????? 剛開始的想法是利用SetImageRoi和CvCopy函數,可是CvCopy函數必須要求源圖片和目的圖片的尺寸一致,即使設置了Roi,由于圖片的尺寸不一致,運行的時候還是會導致尺寸不匹配的錯誤。
?????? 然后想到的是SetImageRoi和CvCloneImage函數,但是CvCloneImage函數運行后,會將目的圖片的尺寸修改成和源圖片的尺寸一致,即使設置了Roi也沒有效果。
??????? 后來看到了CvRepeat這個函數,可以完成想要的功能。
#include <cv.h>
#include <cxcore.h>
#include <cassert>
using namespace std;
void ImageMerge(IplImage* pImageA,IplImage* pImageB,IplImage*& pImageRes)
{
assert(pImageA != NULL && pImageB != NULL);
assert(pImageA->depth == pImageB->depth && pImageA->nChannels == pImageB->nChannels);
if (pImageRes != NULL)
{
?? cvReleaseImage(&pImageRes);
?? pImageRes = NULL;
}
CvSize size;
size.width = pImageA->width + pImageB->width + 10;
size.height = (pImageA->height > pImageB->height) ? pImageA->height : pImageB->height;
pImageRes = cvCreateImage(size,pImageA->depth,pImageA->nChannels);
CvRect rect = cvRect(0,0,pImageA->width,pImageA->height);
cvSetImageROI(pImageRes,rect);
cvRepeat(pImageA,pImageRes);
cvResetImageROI(pImageRes);
rect = cvRect(pImageA->width + 10,0,pImageB->width,pImageB->height);
cvSetImageROI(pImageRes,rect);
cvRepeat(pImageB,pImageRes);
cvResetImageROI(pImageRes);
}
總結
以上是生活随笔為你收集整理的opencv 将两张图片显示到一幅图片中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pyinstaller 打包 torch
- 下一篇: IDG刘雨坤:关于SaaS业务七点经验