一、IplImage的一些重要成员:

1、origin:图像原点的定义。=0,则图片的左上角是原点;=1,则左下角是原点。                                                                   IplImage* img=cvLoadImage("图片路径");                                                                            img->origin=0,1;

2、depth:图像颜色深度,有6种取值

3、widthStep:一行的字节数

6、nChannels:图像的通道数,(B,G,R),一个像素点对应3个值(B,G,R);

二、访问图像像素点:

imageData是图像的起始地址:                                                                       IplImage* img;                                                                                                                     usigned char* prow=(usigned char*) (img->imageData+y*img->widthStep);       //prow指针指向图像img第y行的起始地址

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"

int main(int argc, char* argv[])
{
IplImage *img=cvLoadImage("E:\\大四上\\openCV\\水果\\1.jpg",2|4);
IplImage *b_img=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); //b通道图像
IplImage *g_img=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); //g通道图像
IplImage *r_img=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); //r通道图像*/
int y,x;
for(y=0;y<img->height;y++)
{
unsigned char* prow=(unsigned char*)(img->imageData+y*img->widthStep);
unsigned char* b_prow=(unsigned char*)(b_img->imageData+y*b_img->widthStep);
unsigned char* g_prow=(unsigned char*)(g_img->imageData+y*g_img->widthStep);
unsigned char* r_prow=(unsigned char*)(r_img->imageData+y*r_img->widthStep);
for(x=0;x<img->width;x++)
{
b_prow[x]=prow[x*3+0];
g_prow[x]=prow[x*3+1];
r_prow[x]=prow[x*3+2];

}
}

cvNamedWindow("img");
cvNamedWindow("b_img");
cvNamedWindow("g_img");
cvNamedWindow("r_img");

cvShowImage("img",img);
cvShowImage("b_img",b_img);
cvShowImage("g_img",g_img);
cvShowImage("r_img",r_img);
cvWaitKey(0);

return 0;
}

结果截图:

三、ROI:在一幅图像中,感兴趣的区域(一个矩形区域)

  对图像设置ROI区域的方法:cvSetImageROI(img,rect);   //img是图像,rect是矩形区域

  取消ROT区域:cvResetImageROI(img);

  把img2添加到img1这幅图像上:cvCopy(img2,img1);在用的时候,必须保证两幅图像的格式相同,并且同为彩色图像或灰度图像

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"

int main(int argc, char* argv[])
{
IplImage* img1=cvLoadImage("E:\\大四上\\openCV\\水果\\苹果.png");
IplImage* img2=cvLoadImage("E:\\大四上\\openCV\\水果\\梨.png");

CvRect rect=cvRect( 40, 25, img2->width, img2->height); //矩形
cvSetImageROI(img1,rect); //对图像设置ROI区域
cvNamedWindow("img1");
cvCopy(img2,img1); //把img2复制到img1上面
cvResetImageROI(img1); //取消ROI区域
cvShowImage("img1",img1);
cvWaitKey(0);
return 0;
}

IplImage结构体的更多相关文章

  1. opencv——IplImage结构

    一.作业要求: 采用MATLAB或opencv+C编程实现.每一题写明题目,给出试验程序代码,实验结果图片命名区分并作出效果比对,最后实验总结说明每一题蕴含的图像处理方法的效果以及应用场合等. 采用M ...

  2. IplImage 结构解读

    IplImage 结构解读: typedef struct _IplImage { int nSize;                              /* IplImage大小,等于wi ...

  3. IplImage 结构解读(转)

    typedef struct _IplImage { int nSize;                             /* IplImage大小 */ int ID;           ...

  4. C#调用C++系列二:传结构体

    这一篇记录下C#调用C++的结构体的方式来使用OpenCV的数据格式,这里会有两种方式,第一种是C#传一个结构体和图像的路径给C++,然后C++将图像加载进来,再把传进来的结构体填满即可,第二种是C# ...

  5. Go结构体实现类似成员函数机制

    Go语言结构体成员能否是函数,从而实现类似类的成员函数的机制呢?答案是肯定的. package main import "fmt" type stru struct { testf ...

  6. C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱

    一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...

  7. go语言结构体

    定义: 是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体. 成员: 每个值称为结构体的成员. 示例: 用结构体的经典案例处理公司的员工信息,每个员工信息包含一个唯一的员工编号.员工的名字. ...

  8. C语言中的结构体

    用户自己建立自己的结构体类型 1.  定义和使用结构体变量 (1).结构体的定义 C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体. (2).声明一个结构体类型的一般形式为: ...

  9. C++_系列自学课程_第_12_课_结构体

    #include <iostream> #include <string> using namespace std; struct CDAccount { double bal ...

随机推荐

  1. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C.Ray Tracing (模拟或扩展欧几里得)

    http://codeforces.com/contest/724/problem/C 题目大意: 在一个n*m的盒子里,从(0,0)射出一条每秒位移为(1,1)的射线,遵从反射定律,给出k个点,求射 ...

  2. 如何在HTML5 Canvas 里面显示 Font Awesome 图标

        Font Awesome 是一套完美的图标字体,主要目的是和 Bootstrap 搭配使用. 提供的CSS 已经可以完美显示这些图标在网页里面.最新的版本4.3 里面,已经提供519 Icon ...

  3. (c语言编程)出现错误:null undeclared identifier

    原因:没有添加头文件#include <stdio.h> 添加完头文件后,错误消失

  4. Power of Four(Difficulty: Easy)

    题目: Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example ...

  5. 国内app快速生成平台对比

     泰格老虎 2013-03-07 00:39:10 这是海恒CEO高鹏写的一篇国内app快速生成平台对比文章,介绍了国内快速生成APP的平台与自己平台的对比,很有参考价值. 同类网站 安米网 http ...

  6. How can I protect derived classes from breaking when I change the internal parts of the base class?

    How can I protect derived classes from breaking when I change the internal parts of the base class? ...

  7. mac OS X Yosemite (10.10.5) 下 安装vim 7.4笔记

    摘要 前言 需求与mac OS X 自带vim版本的冲突 默认Python解释器问题 并非Mac自带python的 homebrew 1. 前言 本文为自己作死折腾的问题记录 2. 需求与mac OS ...

  8. Spring MVC学习笔记--认识SpringMVC

    Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框 ...

  9. [解决方案] pythonchallenge level 4

    http://www.pythonchallenge.com/pc/def/linkedlist.php 查看页面源代码或者点击图片 http://www.pythonchallenge.com/pc ...

  10. php大力力 [048节] php一点支付开发资料,很散

    https://beecloud.cn/activity/jsbutton/?index=4&t=1441261629019 https://beecloud.cn/download/ php ...