Opencv图像处理(读取图像以及简单合并)
2013-09-13 15:24
686 查看
#include<opencv2/opencv.hpp>
using namespace cv;
void main()
{
/*//读取图像并显示
IplImage* src;
src=cvLoadImage("Lena.jpg",0);//这里的lena.jpg和lena.cpp文件放在同一文件夹下1:默认读取图像原通道数。0:强制转换读取图像为灰度图。-1:读取彩色图像
cvNamedWindow("lena",CV_WINDOW_AUTOSIZE);//创建窗口
cvShowImage("lena",src);//显示图像
cvWaitKey(0);
cvDestroyWindow("lena");//销毁窗口
cvReleaseImage(&src);*///释放图像
//创建保存复制图像
IplImage* pImg;
pImg=cvLoadImage("Lena.jpg");
IplImage* pImg1=cvCreateImage(cvGetSize(pImg),pImg->depth,pImg->nChannels);//创建同样大小的图片
IplImage* pImg2=cvCreateImage(cvGetSize(pImg1),pImg->depth,pImg->nChannels);//创建同样大小的图片
IplImage* pImg3=cvCreateImage(cvGetSize(pImg1),pImg->depth,pImg->nChannels);//创建同样大小的图片
IplImage* pImg4=cvCreateImage(cvGetSize(pImg1),pImg->depth,pImg->nChannels);//创建同样大小的图片
cvCopy(pImg,pImg1,NULL);//复制图片
cvSaveImage("Lena1.jpg",pImg1);//把图片写入文件
//cvSaveImage("Lena1.bmp",pImg1);
//cvSaveImage("Lena1.png",pImg1);
//cvNamedWindow("lena1",CV_WINDOW_AUTOSIZE);
//cvShowImage("lena1",pImg1);
cvCopy(pImg,pImg2,NULL);//复制图片
cvSaveImage("Lena2.jpg",pImg2);//把图片写入文件
cvCopy(pImg,pImg3,NULL);//复制图片
cvSaveImage("Lena3.jpg",pImg3);//把图片写入文件
cvCopy(pImg,pImg4,NULL);//复制图片
cvSaveImage("Lena4.jpg",pImg4);//把图片写入文件
//合并图像
IplImage* pDstImg;
pDstImg=cvCreateImage(cvSize(pImg1->width+pImg2->width ,pImg1->height+pImg2->height),IPL_DEPTH_8U,3);
CvRect rect;
rect=cvRect(0,0,pImg1->width,pImg1->height);
cvSetImageROI(pDstImg,rect);
cvCopy(pImg1,pDstImg);
cvResetImageROI(pDstImg);
rect=cvRect(pImg1->width,0,pImg2->width,pImg2->height);
cvSetImageROI(pDstImg,rect);
cvCopy(pImg2,pDstImg);
cvResetImageROI(pDstImg);
rect=cvRect(0,pImg1->height,pImg3->width,pImg3->height);
cvSetImageROI(pDstImg,rect);
cvCopy(pImg3,pDstImg);
cvResetImageROI(pDstImg);
rect=cvRect(pImg1->width,pImg1->height,pImg4->width,pImg4->height);
cvSetImageROI(pDstImg,rect);
cvCopy(pImg4,pDstImg);
cvResetImageROI(pDstImg);
cvNamedWindow("dstiamge");
cvShowImage("dstiamge",pDstImg);
cvSaveImage("dstImg.jpg",pDstImg);
cvWaitKey(0);
cvDestroyWindow("lena1");
cvDestroyWindow("dstiamge");
cvReleaseImage(&pImg1);
cvReleaseImage(&pImg2);
cvReleaseImage(&pImg3);
cvReleaseImage(&pImg4);
cvReleaseImage(&pDstImg);
}
using namespace cv;
void main()
{
/*//读取图像并显示
IplImage* src;
src=cvLoadImage("Lena.jpg",0);//这里的lena.jpg和lena.cpp文件放在同一文件夹下1:默认读取图像原通道数。0:强制转换读取图像为灰度图。-1:读取彩色图像
cvNamedWindow("lena",CV_WINDOW_AUTOSIZE);//创建窗口
cvShowImage("lena",src);//显示图像
cvWaitKey(0);
cvDestroyWindow("lena");//销毁窗口
cvReleaseImage(&src);*///释放图像
//创建保存复制图像
IplImage* pImg;
pImg=cvLoadImage("Lena.jpg");
IplImage* pImg1=cvCreateImage(cvGetSize(pImg),pImg->depth,pImg->nChannels);//创建同样大小的图片
IplImage* pImg2=cvCreateImage(cvGetSize(pImg1),pImg->depth,pImg->nChannels);//创建同样大小的图片
IplImage* pImg3=cvCreateImage(cvGetSize(pImg1),pImg->depth,pImg->nChannels);//创建同样大小的图片
IplImage* pImg4=cvCreateImage(cvGetSize(pImg1),pImg->depth,pImg->nChannels);//创建同样大小的图片
cvCopy(pImg,pImg1,NULL);//复制图片
cvSaveImage("Lena1.jpg",pImg1);//把图片写入文件
//cvSaveImage("Lena1.bmp",pImg1);
//cvSaveImage("Lena1.png",pImg1);
//cvNamedWindow("lena1",CV_WINDOW_AUTOSIZE);
//cvShowImage("lena1",pImg1);
cvCopy(pImg,pImg2,NULL);//复制图片
cvSaveImage("Lena2.jpg",pImg2);//把图片写入文件
cvCopy(pImg,pImg3,NULL);//复制图片
cvSaveImage("Lena3.jpg",pImg3);//把图片写入文件
cvCopy(pImg,pImg4,NULL);//复制图片
cvSaveImage("Lena4.jpg",pImg4);//把图片写入文件
//合并图像
IplImage* pDstImg;
pDstImg=cvCreateImage(cvSize(pImg1->width+pImg2->width ,pImg1->height+pImg2->height),IPL_DEPTH_8U,3);
CvRect rect;
rect=cvRect(0,0,pImg1->width,pImg1->height);
cvSetImageROI(pDstImg,rect);
cvCopy(pImg1,pDstImg);
cvResetImageROI(pDstImg);
rect=cvRect(pImg1->width,0,pImg2->width,pImg2->height);
cvSetImageROI(pDstImg,rect);
cvCopy(pImg2,pDstImg);
cvResetImageROI(pDstImg);
rect=cvRect(0,pImg1->height,pImg3->width,pImg3->height);
cvSetImageROI(pDstImg,rect);
cvCopy(pImg3,pDstImg);
cvResetImageROI(pDstImg);
rect=cvRect(pImg1->width,pImg1->height,pImg4->width,pImg4->height);
cvSetImageROI(pDstImg,rect);
cvCopy(pImg4,pDstImg);
cvResetImageROI(pDstImg);
cvNamedWindow("dstiamge");
cvShowImage("dstiamge",pDstImg);
cvSaveImage("dstImg.jpg",pDstImg);
cvWaitKey(0);
cvDestroyWindow("lena1");
cvDestroyWindow("dstiamge");
cvReleaseImage(&pImg1);
cvReleaseImage(&pImg2);
cvReleaseImage(&pImg3);
cvReleaseImage(&pImg4);
cvReleaseImage(&pDstImg);
}
相关文章推荐
- ROS学习笔记(2):在ROS中使用OpenCV进行简单的图像处理---代码实现篇
- 【OpenCV数字图像处理】(5) 【Python编程】(5) 像素访问之添加椒盐实例 通道分离与合并
- OpenCV简单图像处理 灰度变换
- Python下opencv使用笔记(一)(图像简单读取、显示与储存)
- Matlab中如何读出写入图像文件以及对图像的简单处理
- opencv简单的图像读取
- (初学树莓派香蕉派心得)利用opencv简单控制摄像头,做一些基本图像处理
- 用OpenCV-Python 完成简单的图像读取,显示
- OpenCV 学习记录2 图像简单处理及调用摄像头
- Ribbon+Opencv 2.4--实现一个简单的Opencv图像处理小工具
- OpenCV读取图像时Alpha通道的处理
- opencv使用日记之一:平台搭建Mat类以及图像的读取修改
- [openCV]视频的读入与一些简单的图像处理
- OpenCV入门_学习笔记_读取、显示、处理图像
- C#读取摄像头并对图像做简单处理--AVICap32篇
- 6-python图像处理opencv(2.图像像素访问,通道分离与合并)
- OpenCV图像处理编程实例---(1)图像读取存储保
- python for OpenCV图像处理之模板匹配以及分水岭算法
- 基于Qt与OpenCV的图片读取、保存,并利用Canny进行简单的边缘处理结果显示
- 初学图像处理+opencv----读取视频