这篇⽂章还是我开通这个博客以来的第⼀篇⽂章,虽然我现在已经不再做图像⽅⾯的东西,但是看到这篇下⾯有很多留⾔,我觉得是这篇⽂章的题⽬给⼤家造成了误解。⼤家需要了解的应该是不同视⾓下的图像拼接,⽽我这⾥只是简简单单的将两个图像凑在⼀起,期间没有任何图像特征提取的⽅法在这⾥,因此,对于初学OpenCV的⼈来说,这⾥的代码可以作为⼊门级教程。
下⾯是⼏个知识点:
(1)路径的设置⽅式:通常情况下,需要把包含图⽚的⽂件夹保存到⼯程⽬录下,也就是保证和Debug在同⼀个根⽬录下⾯;(2)cvSetImageROI函数和cvCopy函数的⽤法:
cvSetImageROI(IplImage*dst,cvRect(左边界,上边界,宽度,⾼度))。他的作⽤是把图像在图像dst中开辟出cvRect矩形框区域⼤⼩的内存空间,然后cvCopy(IplImage*src,IplImage*dst)函数会将源图像src复制到⽬标图像dst中。
*****************/#include #include 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; 因篇幅问题不能全部显示,请点此查看更多更全内容