zoukankan      html  css  js  c++  java
  • OpenCv函数学习(一)

    Intel Image Processing Library (IPL)

     1 typedef struct _IplImage
     2 {
     3 int nSize; /* IplImage大小 */
     4 int ID; /* 版本 (=0)*/
     5 int nChannels; /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */
     6 int alphaChannel; /* 被OpenCV忽略 */
     7 int depth; /* 像素的位深度,主要有以下支持格式: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,IPL_DEPTH_16S, IPL_DEPTH_32S,
     8 IPL_DEPTH_32F 和IPL_DEPTH_64F */
     9 char colorModel[4]; /* 被OpenCV忽略 */
    10 char channelSeq[4]; /* 同上 */
    11 int dataOrder; /* 0 - 交叉存取颜色通道, 1 - 分开的颜色通道. cvCreateImage只可以创建交叉存取图像 */
    13 int origin; /*图像原点位置: 0表示顶-左结构,1表示底-左结构 */
    14 int align; /* 图像行排列方式 (4 or 8),在 OpenCV 被忽略,使用 widthStep 代替 */
    15 int width; /* 图像宽像素数 */
    16 int height; /* 图像高像素数*/
    17 struct _IplROI *roi; /* 图像感兴趣区域,当该值非空时,只对该区域进行处理 */
    19 struct _IplImage *maskROI; /* 在 OpenCV中必须为NULL */
    20 void *imageId; /* 同上*/
    21 struct _IplTileInfo *tileInfo; /*同上*/
    22 int imageSize; /* 图像数据大小(在交叉存取格式下ImageSize=image->height*image->widthStep),单位字节*/
    23 char *imageData; /* 指向排列的图像数据 */
    24 int widthStep; /* 排列的图像行大小,以字节为单位 */
    25 int BorderMode[4]; /* 边际结束模式, 在 OpenCV 被忽略*/
    26 int BorderConst[4]; /* 同上 */
    27 char *imageDataOrigin; /* 指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的 */
    28 } IplImage;

    位深度

    在记录数字图像的颜色时,计算机实际上是用每个像素需要的位深度来表示的。黑白二色的图像是数字图像中最简单的一种,它只有黑、白两种颜色,也就是说它的每个像素只有1位颜色,位深度是1,用2的一次幂来表示;考虑到位深度平均分给R, G, B和Alpha,而只有RGB可以相互组合成颜色。所以4位颜色的图,它的位深度是4,只有2的4次幂种颜色,即16种颜色或16种灰度等级 ) 。8位颜色的图,位深度就是8,用2的8次幂表示,它含有256种颜色 ( 或256种灰度等级 )。24位颜色可称之为真彩色,位深度是24,它能组合成2的24次幂种颜色,即:16777216种颜色 ( 或称千万种颜色 ),超过了人眼能够分辨的颜色数量。当我们用24位来记录颜色时,实际上是以2^(8×3),即红、绿、蓝 ( RGB ) 三基色各以2的8次幂,256种颜色而存在的,三色组合就形成一千六百万种颜色。

    CvLoadImage

    IplImage* CvLoadImage(const char *cFileName, int flags)

    CvLoadImage(cFileName, -1); // 默认读取图像的原通道数

    CvLoadImage(cFileName, 0);  // 强制转化读取图像为灰度图

    CvLoadImage(cFileName, 1);  // 读取彩色图

    CvCloneImage

    IplImage* CvCloneImage(const IplImage *p)

    在使用函数之前,不用特地开辟内存,即该函数会自己开一段内存,然后复制好image里面的数据,然后把这段内存中的数据返回.

    CreateCvImage

    IplImage* cvCreateImage(CvSize size, int depth, int channels)

    作用申请一个图片结构大小的内存,比如创建灰色图像

    IplImage *pGraycvImage = cvCreateImage(cvGetSize(pSrc_Image), 8, 1);

    cvCvtColor(pSrc_Image,pGraycvImage ,CV_BGR2GRAY);

  • 相关阅读:
    L-这是最难的题(二分+前缀和)
    SPFA 原理剖析代码实现分析比较
    树状数组---原理代码实现
    bellman-ford算法
    UML用例图总结
    UML类图几种关系的总结
    UML序列图总结
    线段树--Color the ball(多次染色问题)
    临时文档3
    POJ2676-Sudoku(数独)
  • 原文地址:https://www.cnblogs.com/xiaobingqianrui/p/6664142.html
Copyright © 2011-2022 走看看