OpenCV: 实现将三幅图像合并在一张图片
2015-12-04 09:08
399 查看
[cpp] view
plaincopy
*****************/
#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;
虽然我现在已经不再做图像方面的东西,但是看到这篇下面有很多留言,我觉得是这篇文章的题目给大家造成了误解。大家需要了解的应该是不同视角下的图像拼接,而我这里只是简简单单的将两个图像凑在一起,期间没有任何图像特征提取的方法在这里,因此,对于初学OpenCV的人来说,这里的代码可以作为入门级教程。
/article/4895037.html
下面是几个知识点:
(1)路径的设置方式:通常情况下,需要把包含图片的文件夹保存到工程目录下,也就是保证和Debug在同一个根目录下面;
(2)cvSetImageROI函数和cvCopy函数的用法:
cvSetImageROI(IplImage*dst,cvRect(左边界,上边界,宽度,高度))。他的作用是把图像在图像dst中开辟出cvRect矩形框区域大小的内存空间,然后cvCopy(IplImage*src,IplImage*dst)函数会将源图像src复制到目标图像dst中。
plaincopy
*****************/
#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;
虽然我现在已经不再做图像方面的东西,但是看到这篇下面有很多留言,我觉得是这篇文章的题目给大家造成了误解。大家需要了解的应该是不同视角下的图像拼接,而我这里只是简简单单的将两个图像凑在一起,期间没有任何图像特征提取的方法在这里,因此,对于初学OpenCV的人来说,这里的代码可以作为入门级教程。
/article/4895037.html
下面是几个知识点:
(1)路径的设置方式:通常情况下,需要把包含图片的文件夹保存到工程目录下,也就是保证和Debug在同一个根目录下面;
(2)cvSetImageROI函数和cvCopy函数的用法:
cvSetImageROI(IplImage*dst,cvRect(左边界,上边界,宽度,高度))。他的作用是把图像在图像dst中开辟出cvRect矩形框区域大小的内存空间,然后cvCopy(IplImage*src,IplImage*dst)函数会将源图像src复制到目标图像dst中。
相关文章推荐
- CentOS 6.3下配置LVM(逻辑卷管理)
- 使用PowerShell管理Hyper-v
- 使用PowerShell管理Hyper-v 推荐
- Portal.MVC —— nopcommerce的简化版
- Linux下vsftpd的简单应用(一)
- 在MFC中修改opencv的namedWindow窗口位置
- linux下使用Eclipse编译调试C++ makefile项目
- [IT学习]微软如何做网站内容治理
- CentOS6.6系统下以RPM方式安装mysql-5.7.9
- CentOS+nginx+uwsgi+Python+django 环境搭建
- My way on Linux - [Shell基础] - Bash Shell中判断文件、目录是否存在或者判断其是否具有某类属性(权限)的常用方法
- SEQ!org.apache.hadoop.io.LongWritable"org.apache.hadoop.io.BytesWritable
- Linux的五个查找命令
- Shell编程实例
- LAMP 1.2 Apache编译安装
- linux:/etc/skel 文件夹
- JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)
- ros_hydro_OpenCV_kinect_imageconverter
- ResourceBundle 和 Properties 读取Properties文件注意
- ResourceBundle 和 Properties 读取Properties文件注意