- 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如何赋值
- inline CvScalar cvScalar( double val0, double val1=0,double val2=0, double val3=0 );
//最通用的,可初始化0-4个通道
举例:
a) 存放单通道图像中像素:cvScalar(255);
b) 存放三通道图像中像素:cvScalar(255,255,255); - inline CvScalar cvRealScalar( double val0 );
//只使用第一个通道,val[0]=val0;等同于cvScalar(val0,0,0,0); - inline CvScalar cvScalarAll( double val0123 );
//所用通道值用同一个val0123赋值 - CV_RGB
CV_RGB是OPENCV中的一个宏,用于创建一个色彩值:
#define CV_RGB(r,g,b) cvScalar((b),(g),(r),0)。
看到转换为cvScalar时,rgb的顺序变为bgr,这是因为opencv中存储RGB模式彩图时,采用的通道顺序是BGR.
- inline CvScalar cvScalar( double val0, double val1=0,double val2=0, double val3=0 );
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)处元素的值。