opencv 图像显示IplImage
来源:互联网 发布:淘宝卖原单 编辑:程序博客网 时间:2024/05/16 23:42
图像显示的origin属性改变 (原点的改变)
#include <opencv\cv.h>#include <opencv\highgui.h>#include <opencv\cxcore.h>#include <stdlib.h>#include <stdio.h> int main(int argc, char* argv[]){IplImage* img;img=cvLoadImage("d://1.jpg");//原点显示 默认值 0:左上角是原点 1:左下角是原点img->origin=1;//输出图像通道数 3通道图像RGB模式printf("nChannels is %d",img->nChannels);cvNamedWindow("1");cvShowImage("1",img);cvWaitKey(0);return 0;}
三个颜色通道分割显示:
#include <opencv\cv.h>#include <opencv\highgui.h>#include <opencv\cxcore.h>#include <stdlib.h>#include <stdio.h> int main(int argc, char* argv[]){ IplImage* img , *sub_img; int y,x; //加载图像1.jpg img = cvLoadImage("d:\\1.jpg"); /* 将3通道图像 分解成 3幅单通道的图像 */ //声明三个图像变量 IplImage* b_img ,*g_img,*r_img; //给三个单通图像 分配内存空间 b_img = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U , 1 ); g_img = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U , 1 ); r_img = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U , 1 ); for(y=0;y<img->height;y++) { //将图像指针偏移到第y行 unsigned char* prow = (unsigned char*)( img->imageData + y* img->widthStep); unsigned char* brow = (unsigned char*)(b_img->imageData + y*b_img->widthStep); unsigned char* grow = (unsigned char*)(g_img->imageData + y*g_img->widthStep); unsigned char* rrow = (unsigned char*)(r_img->imageData + y*r_img->widthStep); for(x=0;x<img->width;x++) { //将B通道 G通道 R通道的值 分别拷贝到3个单通道的图像中去 brow[x] = prow[3*x + 0] ; //拷贝B通道的值prow[3*x + 0] 到 单通道图像b_img grow[x] = prow[3*x + 1] ; //拷贝G通道的值prow[3*x + 0] 到 单通道图像b_img rrow[x] = prow[3*x + 2] ; //拷贝R通道的值prow[3*x + 0] 到 单通道图像b_img } } //创建3个窗口 cvNamedWindow("b"); cvNamedWindow("g"); cvNamedWindow("r"); //显示b g r三个通道的图像 cvShowImage("b" , b_img); cvShowImage("g" , g_img); cvShowImage("r" , r_img); //显示大图像 cvNamedWindow("1"); cvShowImage("1",img); //等待按键 cvWaitKey(0); //释放内存空间 cvReleaseImage(&img); return 0; }
++
人脸覆盖简单技术:
#include <opencv\cv.h>#include <opencv\highgui.h>#include <opencv\cxcore.h>#include <stdlib.h>#include <stdio.h> int main(int argc, char* argv[]) { IplImage* img , *sub_img; int y,x; //加载图像1.jpg img = cvLoadImage("C:\\Users\\zxl\\Desktop\\1.jpg"); //加载图像4.jpg sub_img = cvLoadImage("C:\\Users\\zxl\\Desktop\\4.jpg"); //设置一个感兴趣区域 CvRect rect; rect.x = 457; rect.y = 200 ; rect.width = sub_img->width; rect.height = sub_img->height;///方法1/////////////////////////////////// ////将小图像 拷贝 到大图像的 roi区域 //for( y=0;y<sub_img->height;y++) //{// //将指针偏移到第Y行 // unsigned char* subImgData = (unsigned char*)(sub_img->imageData + y*sub_img->widthStep); // //将目标大图像指针偏移到第 (rect.y = 200)+1行上(进行覆盖)// unsigned char* bigImgData = (unsigned char*)(img->imageData + (y+rect.y)*img->widthStep); // // for( x=0;x<sub_img->width;x++) // {////偏移到第x个像素////B通道 // bigImgData[3*(x+rect.x) + 0 ] = subImgData[3*x + 0 ]; // //G通道 // bigImgData[3*(x+rect.x) + 1 ] = subImgData[3*x + 1 ];////R通道 // bigImgData[3*(x+rect.x) + 2 ] = subImgData[3*x + 2 ]; // } //}/////////////////////////////////// //使用opencv中的函数 设置roi区域 cvSetImageROI(img , rect);///方法2///////////////////////////////////cvCopy(sub_img,img);/////////////////////////////////// //使用完 ROI区域后 要调用函数释放roi区域 cvResetImageROI(img); //显示大图像 cvNamedWindow("1"); cvShowImage("1",img); //等待按键 cvWaitKey(0); //释放内存空间 /*cvReleaseImage(&img); cvReleaseImage(&sub_img);*/ return 0; }
效果:
同上效果代码:
#include <opencv/cv.h>#include <opencv/highgui.h>int main(){ IplImage* img = cvLoadImage("d:\\1.jpg",0);CvRect roi =cvRect(6, 6, 300, 300); cvNamedWindow("img");cvShowImage("img", img);IplImage* img1 = cvLoadImage("d:\\lena.jpg",0);CvRect roi1 = cvRect(6, 6, 300, 300); cvNamedWindow("img1");cvShowImage("img1", img1);cvSetImageROI(img, roi);cvSetImageROI(img1, roi1);cvCopy(img1, img);cvResetImageROI(img);cvResetImageROI(img1);cvNamedWindow("result");cvShowImage("result", img);cvWaitKey(-1);cvReleaseImage(&img);cvReleaseImage(&img1);cvDestroyAllWindows();return 0;}
- opencv 图像显示IplImage
- Qt 中 Label 显示OpenCV 图像(IplImage*)
- Delphi显示Opencv的Mat/IplImage图像
- QT显示OPENCV的图像(IplImage 转为QImage)
- 【opencv】 图像的创建,读取,显示 IplImage,Mat类型转化
- IplImage图像显示出错
- Opencv全屏显示IplImage
- openCV--图像处理类IplImage
- opencv 表示图像的IplImage
- opencv之IplImage图片显示
- OpenCV 2 学习笔记(4): 加载,显示和保存图像,Mat类与IplImage类
- opencv-IplImage结构图像画到HDC上
- opencv图像处理1--IPlImage结构分析
- 图像处理之 YUYV422 To OpenCV IplImage
- opencv中遍历图像(IplImage格式)
- 图像处理之 YUYV422 To OpenCV IplImage
- Opencv基础:图像(IplImage)深度与通道
- Opencv得到图像(IplImage)中的像素
- jsp 页面获取action 属性的方法
- JSP页面跳转大全
- struts1和struts2的区别
- 红黑树实现
- ubuntu 12.04下安装matlab2012a
- opencv 图像显示IplImage
- C++模板学习
- The 12th tip of DB Query Analyzer, powerful in text file process
- Android的SQLite数据库存储
- kindeditor在asp.net中的使用
- 有用的mini itx主板(多pcie)
- VirtualBox安装Ubuntu时不能全屏
- Deep Learning论文笔记之(七)深度网络高层特征可视化
- ASP.NET MVC中在Action获取提交的表单数据方法总结 .