您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页OpenCV实现将三幅图像合并在一张图片

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

来源:叨叨游戏网

这篇文章还是我开通这个博客以来的第一篇文章,虽然我现在已经不再做图像方面的东西,但是看到这篇下面有很多留言,我觉得是这篇文章的题目给大家造成了误解。大家需要了解的应该是不同视角下的图像拼接,而我这里只是简简单单的将两个图像凑在一起,期间没有任何图像特征提取的方法在这里,因此,对于初学OpenCV的人来说,这里的代码可以作为入门级教程。

 


 

下面是几个知识点:

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

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

*****************/
#include
<cv.h>
#include
<highgui.h>
int main()
{
char* filePath ="D:/图片库/Lena.jpg";
IplImage
* srcImg = cvLoadImage(filePath);
IplImage
* greyImg = cvCreateImage(cvGetSize(srcImg), srcImg->depth, 1);
IplImage
* cannyImg = cvCreateImage(cvGetSize(greyImg), srcImg->depth, 1);
CvSize dstSize;
dstSize.width
= srcImg->width *3.0;
dstSize.height
= srcImg->height;
IplImage
* dstImg = cvCreateImage(dstSize, srcImg->depth, srcImg->nChannels);
cvZero(dstImg);
cvConvertImage(srcImg, greyImg);
cvCanny(greyImg, cannyImg,
150, 100);
//----------------------------------
//载入原图像到目标图像
cvSetImageROI(dstImg, cvRect(0, 0, srcImg->width, srcImg->height));
cvCopy(srcImg, dstImg);
cvResetImageROI(dstImg);
//载入灰度图像到目标图像
cvSetImageROI(dstImg, cvRect(srcImg->width, 0, srcImg->width, srcImg->height));
dstImg
->nChannels =1;
cvCopy(greyImg, dstImg);
cvResetImageROI(dstImg);
//载入边缘检测图像到目标图像
cvSetImageROI(dstImg, cvRect((srcImg->width) *2.0, 0, srcImg->width, srcImg->height));
dstImg
->nChannels =1;
cvCopy(cannyImg, dstImg);
cvResetImageROI(dstImg);
//---------------------------------------
cvNamedWindow("dstImg");
cvShowImage(
"dstImg", dstImg);
cvWaitKey(
0);
cvReleaseImage(
&srcImg);
cvReleaseImage(
&greyImg);
cvReleaseImage(
&cannyImg);
cvReleaseImage(
&dstImg);
cvDestroyWindow(
"dstImg");
return0;

 

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务