OpenCV: 实现将三幅图像合并在一张图片

  1. *****************/  
  2. #include <cv.h>  
  3. #include <highgui.h>  
  4. int main()  
  5. {  
  6.     char* filePath ="D:/图片库/Lena.jpg";  
  7.     IplImage* srcImg = cvLoadImage(filePath);  
  8.     IplImage* greyImg = cvCreateImage(cvGetSize(srcImg), srcImg->depth, 1);  
  9.     IplImage* cannyImg = cvCreateImage(cvGetSize(greyImg), srcImg->depth, 1);  
  10.     CvSize dstSize;  
  11.     dstSize.width = srcImg->width *3.0;  
  12.     dstSize.height = srcImg->height;  
  13.     IplImage* dstImg = cvCreateImage(dstSize, srcImg->depth, srcImg->nChannels);  
  14.     cvZero(dstImg);  
  15.     cvConvertImage(srcImg, greyImg);      
  16.     cvCanny(greyImg, cannyImg, 150, 100);  
  17.     //----------------------------------  
  18.     //载入原图像到目标图像  
  19.     cvSetImageROI(dstImg, cvRect(0, 0, srcImg->width, srcImg->height));  
  20.     cvCopy(srcImg, dstImg);  
  21.      cvResetImageROI(dstImg);  
  22.     //载入灰度图像到目标图像  
  23.     cvSetImageROI(dstImg, cvRect(srcImg->width, 0, srcImg->width, srcImg->height));  
  24.     dstImg->nChannels =1;  
  25.     cvCopy(greyImg, dstImg);  
  26.     cvResetImageROI(dstImg);  
  27.     //载入边缘检测图像到目标图像  
  28.     cvSetImageROI(dstImg, cvRect((srcImg->width) *2.0, 0, srcImg->width, srcImg->height));  
  29.     dstImg->nChannels =1;  
  30.     cvCopy(cannyImg, dstImg);  
  31.     cvResetImageROI(dstImg);  
  32.     //---------------------------------------  
  33.     cvNamedWindow("dstImg");  
  34.     cvShowImage("dstImg", dstImg);  
  35.     cvWaitKey(0);  
  36.     cvReleaseImage(&srcImg);  
  37.     cvReleaseImage(&greyImg);  
  38.     cvReleaseImage(&cannyImg);  
  39.     cvReleaseImage(&dstImg);  
  40.     cvDestroyWindow("dstImg");  
  41.     return0;  
}
这篇文章还是我开通这个博客以来的第一篇文章,虽然我现在已经不再做图像方面的东西,但是看到这篇下面有很多留言,我觉得是这篇文章的题目给大家造成了误解。大家需要了解的应该是不同视角下的图像拼接,而我这里只是简简单单的将两个图像凑在一起,期间没有任何图像特征提取的方法在这里,因此,对于初学OpenCV的人来说,这里的代码可以作为入门级教程。

 http://www.cnblogs.com/CBDoctor/archive/2011/09/19/2180998.html

 

下面是几个知识点:

(1)路径的设置方式:通常情况下,需要把包含图片的文件夹保存到工程目录下,也就是保证和Debug在同一个根目录下面;

(2)cvSetImageROI函数和cvCopy函数的用法:

cvSetImageROI(IplImage*dst,cvRect(左边界,上边界,宽度,高度))。他的作用是把图像在图像dst中开辟出cvRect矩形框区域大小的内存空间,然后cvCopy(IplImage*src,IplImage*dst)函数会将源图像src复制到目标图像dst中。

你可能感兴趣的:(OpenCV: 实现将三幅图像合并在一张图片)