码迷,mamicode.com
首页 > 其他好文 > 详细

【Open CV基础】IplImage图像数据

时间:2015-05-04 18:04:28      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:opencv   iplimage   

名词解释:

  • 像素:像素是指基本原色素及其灰度的基本编码。[1] 像素是构成数码影像的基本单元,通常以像素每英寸PPI(pixels per inch)为单位来表示影像分辨率的大小。
  • 像素位深度:每个像素所用的位数(bit),像素位深度决定了彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数。

IplImage各项结构属性说明:(源代码在opencv2/core/types_c.h的465行左右,里面有关各属性的说明)


#include "cv.h"
#include "highgui.h"

#include <iostream>
using namespace std;

int main(){
    system("chcp 936>NUL");
    char* imgStr1 = "fruits.png";

    //打开图片
    IplImage* img1 = cvLoadImage(imgStr1);

    cout << "align 行排列方式(4or8,OpenCV忽略,使用widthStep代替):" << img1->align << "\n";
    cout << "alphaChannel(被Open CV忽略):" << img1->alphaChannel << "\n";  
    cout << "BorderConst 边际结束模式(忽略):" << img1->BorderConst << "\n";
    cout << "BorderMode 在 OpenCV 被忽略:" << img1->BorderMode << "\n";
    cout << "channelSeq 被OpenCV忽略:"<<img1->channelSeq<< "\n";
    cout << "colorModel 颜色模型:" << img1->colorModel << "\n";
    cout << "dataOrder 颜色通道存取方式:"<<img1->dataOrder<< "\n";/* 0 - 交叉存取颜色通道, 1 - 分开的颜色通道.只有cvCreateImage可以创建交叉存取图像 */
    cout << "depth 像素位深度:" << img1->depth << "\n"; /* 像素的位深度,主要有以下支持格式: 
                                                   IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,IPL_DEPTH_16S, IPL_DEPTH_32S,
                                                   IPL_DEPTH_32F 和IPL_DEPTH_64F */
    cout << "height 高像素数:" << img1->height << "\n";
    cout << "ID 版本 (=0):" << img1->ID << "\n";
    //cout << "imageData 指向排列的图像数据:" << img1->imageData << "\n";
    //cout << img1->imageDataOrigin << "\n"; /*指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的*/
    cout << "imageId 在 OpenCV中必须为NULL :" << img1->imageId << "\n";
    cout << "imageSize 图像数据大小,单位字节:"<<img1->imageSize<< "\n";//在交叉存取格式下ImageSize=image->height*image->widthStep
    cout << "maskROI 在 OpenCV中必须为NULL :"<<img1->maskROI<< "\n";
    cout << "nChannels 通道数:" << img1->nChannels << "\n";
    cout << "nSize IplImage大小:" << img1->nSize << "\n";
    cout << "origin 图像原点位置: 0表示顶-左结构,1表示底-左结构:" << img1->origin << "\n";

    cout << "roi 在 OpenCV中必须为NULL :"<<img1->roi << "\n";
    cout << "titleInfo 在 OpenCV中必须为NULL :"<<img1->tileInfo << "\n";

    cout << "width 宽像素数:" << img1->width << "\n";
    cout << "width 排列的图像行大小,以字节为单位:" << img1->widthStep << "\n";

    char* s1 = "img1";
    cvNamedWindow(s1);
    cvShowImage(s1, img1);
    cvWaitKey(0);
    cvReleaseImage(&img1);
    cvDestroyWindow(s1);
    getchar();
    return 0;
}

这里打开的是png图片,所以通道数理应是4,但实际上是3;原因在于打开图片的时候使用默认的打开方式,应该指定iscolor为-1,

IplImage* img1 = cvLoadImage(imgStr1,-1);

此时可看到通道数已为4.

【Open CV基础】IplImage图像数据

标签:opencv   iplimage   

原文地址:http://blog.csdn.net/zgljl2012/article/details/45483217

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!