Opencv学习笔记-常用函数

本文详细介绍了OpenCV中的一些基本概念,包括路径处理方法、CvSize结构体、cvCreateImage函数、cvScalar结构体、CV_RGB宏及cvGet2D函数的使用方法。这些基础知识对于初学者来说至关重要。
  • opencv在读取图片或者文件时候的路径和电脑有区别:需要将“\”改为“/” ;

cvSize:

  • OpenCV的基本数据类型之一。表示矩阵框大小,以像素为精度。与CvPoint结构类似,但数据成员是integer类型的width和height。
  • 在定义CvSize结构变量时,可以按照如下方式定义:
    CvSize size=cvSize(400,300); /* 定义宽为400象素,高为300象素的矩形 */
    Cvsize结构用来设置矩形区域大小,在一些复杂高级的结构体常常能够看到它

cvCreatImage函数

  • opencv的一个函数:用于自定义创建图像
  • 用法如下:
    IplImage* cvCreateImage( CvSize size, int depth, int channels );
  • 其中参数含义如下:
  • size 图像宽、高.
  • depth 图像元素的位深度,可以是下面的其中之一:
    IPL_DEPTH_8U - 无符号8位整型
    IPL_DEPTH_8S - 有符号8位整型
    IPL_DEPTH_16U - 无符号16位整型
    IPL_DEPTH_16S - 有符号16位整型
    IPL_DEPTH_32S - 有符号32位整型
    IPL_DEPTH_32F - 单精度浮点数
    IPL_DEPTH_64F - 双精度浮点数
  • channels :图像的通道数
    每个元素(像素)通道数.可以是 1, 2, 3 或 4.通道是交叉存取的,例如通常的彩色图像数据排列是:b0 g0 r0 b1 g1 r1 … 虽然通常 IPL 图象格式可以存贮非交叉存取的图像,并且一些OpenCV 也能处理他, 但是这个函数只能创建交叉存取图像。

  • 例子:
    -Mat tmp = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,1);//生成一个500*500的空矩阵.

cvScalar结构体

  • CvScalar一个可以用来存放4个double数值的数组;一般用来存放像素值(不一定是灰度值)的,最多可以存放4个通道的。

  • 该结构体的定义
    typedef struct CvScalar
    {
      double val[4];
      }CvScalar

    如何赋值

    1. inline CvScalar cvScalar( double val0, double val1=0,double val2=0, double val3=0 );
      //最通用的,可初始化0-4个通道
      举例:
      a) 存放单通道图像中像素:cvScalar(255);
      b) 存放三通道图像中像素:cvScalar(255,255,255);
    2. inline CvScalar cvRealScalar( double val0 );
      //只使用第一个通道,val[0]=val0;等同于cvScalar(val0,0,0,0);
    3. inline CvScalar cvScalarAll( double val0123 );
      //所用通道值用同一个val0123赋值
    4. CV_RGB
      CV_RGB是OPENCV中的一个宏,用于创建一个色彩值:
      #define CV_RGB(r,g,b) cvScalar((b),(g),(r),0)。
      看到转换为cvScalar时,rgb的顺序变为bgr,这是因为opencv中存储RGB模式彩图时,采用的通道顺序是BGR.
  • cvGet2D函数:访问图像中的像素值
    cvGet*D系列函数用来返回特定位置的数组元素(一般使用cvGet2D),原型如下:

    CvScalar cvGet1D( const CvArr* arr, int idx0 );
    CvScalar cvGet2D( const CvArr* arr, int idx0, int idx1 );
    CvScalar cvGet3D( const CvArr* arr, int idx0, int idx1, int idx2 );
    CvScalar cvGetND( const CvArr* arr, int* idx );
    idx0,idx1,idx2分别用来指示元素数组下标,即cvGet2D返回(idx0,idx1)处元素的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值