Opencv将两幅或多幅IplImage图像同时并行显示在同一副图像上——程序
2014-10-14 17:10
453 查看
做图像对比时难免想要将两幅图像平行显示在同一幅图像中或者竖直显示在同一副图像中。opencv提供了cvSetImageROI()函数可以很简单的实现这一功能,我只需先读取两幅图像,确定图像要缩放的倍数后,再确定图像是按列并排还是按行并排,计算图像要缩放到的尺寸,以及设计两幅图像之间,图像和边缘之间要放多少空隙或者不放,就ok了。
下面就实现来看看。我的两幅图像大小是一样的,这里两幅都是IplImage图像,读入时先转成灰度图再共同显示,显示时上下左右离边界,两幅图像之间均有10个像素的距离,显示后在图像上画横线对比:
原图左:
原图右:
程序如下:
#include "stdafx.h"#include <iostream>#include <stdio.h>#include <math.h>#include <opencv/cv.h>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace cv;using namespace std;void main(){IplImage *image1=cvLoadImage("1-CMOS0.bmp");IplImage *image2=cvLoadImage("1-CMOS1.bmp");int H=image1->height;int W=image1->width;//以下为彩色转灰度图IplImage* Img1 = cvCreateImage( cvSize(W,H), IPL_DEPTH_8U, 1);IplImage* Img2 = cvCreateImage( cvSize(W,H), IPL_DEPTH_8U, 1);cvCvtColor( image1, Img1, CV_RGB2GRAY);cvCvtColor( image2, Img2, CV_RGB2GRAY);//以下为设计新的图像IplImage* ShowImage; //这个就是要共同显示两幅图像的图像float scale=1.2;//图像缩放倍数int sizew=W/scale;int sizeh=H/scale;int r=2;//一行放r幅图像int c=1;//一列放c幅图像int spaceW=30;//图像之间,图像和边缘之间所有的间隙之和int spaceH=20;int x= spaceW/(r+1); //左图像左上角起始点坐标int y= spaceH/(c+1);ShowImage = cvCreateImage( cvSize(30 + sizew*r, 20 + sizeh*c), IPL_DEPTH_8U, 1 ); //赋给这个图像大小并设为单通道1。如之前无转为灰度图步骤则设置为3.//左图放在左边cvSetImageROI(ShowImage, cvRect(x, y, (int)( W/scale ), (int)( H/scale )));cvResize(Img1, ShowImage);cvResetImageROI(ShowImage);//右图放在右边int x1=x+(int)( W/scale )+spaceW/(r+1);//右图像的左上角起始位置int y1=y;cvSetImageROI(ShowImage, cvRect(x1, y1, (int)( W/scale ), (int)( H/scale )));cvResize(Img2, ShowImage);cvResetImageROI(ShowImage);//画横线用来对比for( int j = 10; j < H; j += 24 ){cvLine( ShowImage, cvPoint(0,j), cvPoint(30 + sizew*r,j), cvScalar(255,255,255),1); //1是粗细}cvShowImage("共同显示", ShowImage);cvWaitKey();cvReleaseImage( &ShowImage );}程序运行后显示结果如下:[/code]
上面是简单的两幅图像并行显示的情况,多幅图像同时显示时,只需合理设计要显示图像的大小以及各图像的排列方式即可。
相关文章推荐
- 使用GDI+显示OpenCV中的图像IplImage
- OpenCV中一个窗口显示两幅图像
- windows程序显示opencv的IplImage
- MFC+Opencv在对话框程序中显示出一幅图像
- 安装问题+读取图像、放缩、形态学开闭运算、显示图像的opencv程序代码
- opencv第一个显示图像的小程序
- 在opencv中,如何将二维数组转化为一副图像进行显示?
- 使用GDI+显示OpenCV中的图像IplImage
- 【opencv】 图像的创建,读取,显示 IplImage,Mat类型转化
- VS2010+OpenCV2.3.1创建win32 console App 来显示一副图像
- opencv 图像显示IplImage
- opencv加载并显示图像程序
- opencv程序一:加载显示图像
- OPENCV中显示图像程序代码
- OpenCV的第一个小程序:读取图像并显示
- OpenCV 2 学习笔记(3): 一个简单的opencv程序:在Console上显示图像
- opencv 图像显示IplImage
- opencv::将两幅图像合并后,在同一个窗口显示;并将合并的图像流保存成视频文件
- MFC+Opencv在单文档程序中显示出一幅图像
- 一个简单的显示图像程序(OpenCV)