opencv 将两张图片显示到一幅图片中
2012-08-15 11:05
447 查看
转自: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处理图片后,希望将处理后的图片和处理前的图片显示在一起,以方便看出两者之间的差别。
刚开始的想法是利用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 将两张图片显示到一幅图片中
- opencv 将两张图片显示到一幅图片中
- opencv 将两张图片显示到一幅图片中
- opencv 将两张图片显示到一幅图片中
- opencv 将两张图片显示到一幅图片中
- opencv学习(1)——读入并显示一幅图片
- OpenCV笔记1:显示一幅图片(一)
- 利用opencv将两张图像在同一窗口上显示,并在图片上显示文字
- opencv两张同大小图片合并重叠
- OPENCV如何把图片显示到MFC的picture控件上
- linux下调用opencv接口函数显示一张图片
- opengl离屏渲染(不需要和窗口绑定,仅当作一个可以渲染一张图片的API使用)+ opencv显示
- OpenCV一个窗口显示多张图片
- opencv 学习第二天 学习opencv(中文版)对一幅图片进行高斯平滑
- Opencv读取文件夹连续图片,RGB分量显示,图像灰度化
- 两张图片不显示
- 【OpenCV】读取显示图片及Mat类
- opencv显示完整图片
- OpenCV——图片的加载、显示、保存(python)
- Android TransitionDrawable 两张图片过渡 最后显示第二张