OpenCv基础学习笔记之一[core_c.h]
2014-08-06 11:35
405 查看
EX01
cvCreateImage
说明:创建首地址并分配存储空间
函数结构 IplImage* cvCreateImage( CvSize size, int depth, int channels );
size : 图像宽、高.
depth : OpenCV的图象类型
channels: 每个元素(像素)通道号.可以是 1, 2, 3 或 4.通道是交叉存取的,例如通常的彩色图像数据排列是:b0 g0 r0 b1 g1 r1 ... 虽然通常 IPL 图象格式可以存贮非交叉存取的图像,并且一些OpenCV 也能处理他, 但是这个函数只能创建交叉存取图像.
内联函数
CV_INLINE CvSize cvSize( int width, int height )
{
CvSize s;
s.width = width;
s.height = height;
return s;
}
cvSet
说明:用给定值初始化数组
函数结构 void cvSet(CvArr* arr,CvScalar value, const CvArr* mask=Null)
这些函数能将数组的所有通道的所有值设置为指定的参数value。该cvSet()函数接受一个可选的参数:如果提供参数,那么只有那些与参数mask中非0值对应的像素将被设置为指定的值。如果数组
那么就会使用ROI,但 COI不能设置
cvScalar[types_c.h]里面。
inline CvScalar cvScalar( double val0, double val1=0,double val2=0, double val3=0 ); 解释为cvScalar((b),(g),(r),0)
inline CvScalar cvScalarAll( double val0123 ); :所有值赋予一样的值。
#define CV_RGB(r,g,b); :等于cvScalar((b),(g),(r),0) 如果CV_RGB(0, 0, 255)是蓝色同样cvScalar(255, 0, 0); 也是蓝色。
cvSetZero
说明:将数组中所有元素初始化为0
函数结构 void cvSetZero(CvArr* arr);
数cvSetZero()仅仅是cvSet(0.0)别名。cvSetZero( dstImage3);等于cvSet(CvArr*, cvScalarAll(0))或者cvSet(CvArr*,
cvScalar(0,0,0))等等。
cvCloneImage
说明:将整个IplImage结构复制到新的IplImage中
函数结构 IplImage* cvCloneImage( const IplImage* image );
在使用函数之前,不用开辟内存。该函数会自己开一段内存,然后复制好image里面的数据,然后把这段内存中的数据返回给你。
clone是把所有的都复制过来,也就是说不论你是否设置Roi,Coi等影响copy的参数,clone都会原封不动的克隆过来。
copy就不一样,只会复制ROI区域等。用clone复制之后,源图像在内存中消失后,复制的图像也变了,而用copy复制,源图像消失后,复制的图像不变
IplImage *srcImage;
if ((srcImage = cvLoadImage("lena.jpg")) == NULL)
return -1;
IplImage *dstImage1;
dstImage1 = cvCloneImage(srcImage);
cvCopy
说明: 把数组中的值复制到另一个数组中
函数结构 void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL );
src : 输入数组。Dst : 输出数组。
mask :操作掩码是8比特单通道的数组,它指定了输出数组中被改变的元素。
clone是把所有的都复制过来,也就是说不论你是否设置Roi,Coi等影响copy的参数,clone都会原封不动的克隆过来。
copy就不一样,只会复制ROI区域等。用clone复制之后,源图像在内存中消失后,复制的图像也变了,而用copy复制,源图像消失后,复制的图像不变
cvSetReal*D
说明:
函数结构 CVAPI(void) cvSetReal1D( CvArr* arr, int idx0,
4000
double value );
函数结构 CVAPI(void) cvSetReal2D( CvArr* arr, int idx0, int idx1, double value );
函数结构 CVAPI(void) cvSetReal3D( CvArr* arr, int idx0, int idx1, int idx2, double value );
函数结构 CVAPI(void) cvSetRealND( CvArr* arr, const int* idx, double value );
#include "cv.h" #include "highgui.h" int main() { IplImage *dstImage1, *dstImage2, *dstImage3; dstImage1 = cvCreateImage(cvSize(512, 512), IPL_DEPTH_8U, 3); dstImage2 = cvCreateImage(cvSize(512, 512), IPL_DEPTH_8U, 3); dstImage3 = cvCreateImage(cvSize(512, 512), IPL_DEPTH_8U, 3); cvSet(dstImage1, cvScalar(255, 0, 0)); cvSet(dstImage2, CV_RGB(0, 0, 255)); cvSetZero( dstImage3); cvShowImage("dstImage1", dstImage1); cvShowImage("dstImage2", dstImage2); cvShowImage("dstImage3", dstImage3); cvWaitKey(); cvDestroyAllWindows(); cvReleaseImage(&dstImage1); cvReleaseImage(&dstImage2); cvReleaseImage(&dstImage3); return 0; }结果
cvCreateImage
说明:创建首地址并分配存储空间
函数结构 IplImage* cvCreateImage( CvSize size, int depth, int channels );
size : 图像宽、高.
depth : OpenCV的图象类型
IPL_DEPTH_8U | 8bit unsigned integer (0 ~ 255) |
---|---|
IPL_DEPTH_8S | 8bit signed integer (-128 ~ 127) |
IPL_DEPTH_16U | 16bit unsigned integer |
IPL_DEPTH_16S | 16bit signed integer |
IPL_DEPTH_32S | 32bit signed integer |
IPL_DEPTH_32F | 32bit floating - point number |
IPL_DEPTH_64F | 64bit floating - point number |
内联函数
CV_INLINE CvSize cvSize( int width, int height )
{
CvSize s;
s.width = width;
s.height = height;
return s;
}
CVAPI(CvSize) cvGetSize( const CvArr* arr );
IplImage *dstImage; dstImage = cvCreateImage(cvSize(512, 512),IPL_DEPTH_8U, 3);
cvSet
说明:用给定值初始化数组
函数结构 void cvSet(CvArr* arr,CvScalar value, const CvArr* mask=Null)
这些函数能将数组的所有通道的所有值设置为指定的参数value。该cvSet()函数接受一个可选的参数:如果提供参数,那么只有那些与参数mask中非0值对应的像素将被设置为指定的值。如果数组
arr是
IplImage类型,
那么就会使用ROI,但 COI不能设置
cvScalar[types_c.h]里面。
IplImage *dstImage1, *dstImage2; dstImage1 = cvCreateImage(cvSize(512, 512), IPL_DEPTH_8U, 3); dstImage2 = cvCreateImage(cvSize(512, 512), IPL_DEPTH_8U, 3); cvSet(dstImage1, cvScalar(255, 0, 0)); cvSet(dstImage2, CV_RGB(0, 0, 255)); cvShowImage("dstImage1", dstImage1); cvShowImage("dstImage2", dstImage2);内涵函数
inline CvScalar cvScalar( double val0, double val1=0,double val2=0, double val3=0 ); 解释为cvScalar((b),(g),(r),0)
cvSet(dstImage1, cvScalar(255, 0, 0));inline CvScalar cvRealScalar( double val0 ); :赋予1通道的值。
cvSet(dstImage1, cvRealScalar(0));
inline CvScalar cvScalarAll( double val0123 ); :所有值赋予一样的值。
cvSet(dstImage2, cvScalarAll(0));
#define CV_RGB(r,g,b); :等于cvScalar((b),(g),(r),0) 如果CV_RGB(0, 0, 255)是蓝色同样cvScalar(255, 0, 0); 也是蓝色。
cvSet(dstImage2, CV_RGB(0, 0, 255));
cvSetZero
说明:将数组中所有元素初始化为0
函数结构 void cvSetZero(CvArr* arr);
数cvSetZero()仅仅是cvSet(0.0)别名。cvSetZero( dstImage3);等于cvSet(CvArr*, cvScalarAll(0))或者cvSet(CvArr*,
cvScalar(0,0,0))等等。
IplImage *dstImage3; dstImage3 = cvCreateImage(cvSize(512, 512), IPL_DEPTH_8U, 3); cvSetZero( dstImage3); cvShowImage("dstImage3", dstImage3);
cvCloneImage
说明:将整个IplImage结构复制到新的IplImage中
函数结构 IplImage* cvCloneImage( const IplImage* image );
在使用函数之前,不用开辟内存。该函数会自己开一段内存,然后复制好image里面的数据,然后把这段内存中的数据返回给你。
clone是把所有的都复制过来,也就是说不论你是否设置Roi,Coi等影响copy的参数,clone都会原封不动的克隆过来。
copy就不一样,只会复制ROI区域等。用clone复制之后,源图像在内存中消失后,复制的图像也变了,而用copy复制,源图像消失后,复制的图像不变
IplImage *srcImage;
if ((srcImage = cvLoadImage("lena.jpg")) == NULL)
return -1;
IplImage *dstImage1;
dstImage1 = cvCloneImage(srcImage);
cvCopy
说明: 把数组中的值复制到另一个数组中
函数结构 void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL );
src : 输入数组。Dst : 输出数组。
mask :操作掩码是8比特单通道的数组,它指定了输出数组中被改变的元素。
clone是把所有的都复制过来,也就是说不论你是否设置Roi,Coi等影响copy的参数,clone都会原封不动的克隆过来。
copy就不一样,只会复制ROI区域等。用clone复制之后,源图像在内存中消失后,复制的图像也变了,而用copy复制,源图像消失后,复制的图像不变
cvCopy(srcImage, dstImage2);
cvSetReal*D
说明:
函数结构 CVAPI(void) cvSetReal1D( CvArr* arr, int idx0,
4000
double value );
函数结构 CVAPI(void) cvSetReal2D( CvArr* arr, int idx0, int idx1, double value );
函数结构 CVAPI(void) cvSetReal3D( CvArr* arr, int idx0, int idx1, int idx2, double value );
函数结构 CVAPI(void) cvSetRealND( CvArr* arr, const int* idx, double value );
相关文章推荐
- 基础学习笔记之opencv(1):opencv中facedetect例子浅析
- 基础学习笔记之opencv(5):实现鼠标选定矩形框
- 基础学习笔记之opencv(17):皮肤检测类CvAdaptiveSkinDetector的使用
- 基础学习笔记之opencv(5):实现鼠标选定矩形框
- 基础学习笔记之opencv(20):OpenCV中的颜色空间(ing...)
- 基础学习笔记之opencv(2):haartraining前将统一图片尺寸方法
- 基础学习笔记之opencv(13):基本绘图
- 基础学习笔记之opencv(18):kmeans函数使用实例
- 基础学习笔记之opencv(15):离散傅里叶变换
- OpenCV学习笔记(四)——新版本的数据结构core
- OpenCV学习笔记(四十八)——PCA算法实现core
- 基础学习笔记之opencv(10):Mat mask操作
- OpenCV学习笔记(四)——新版本的数据结构core
- 基础学习笔记之opencv(7):ubuntu下opencv在Qt中的使用
- 基础学习笔记之opencv(19):有关图像序列的直方图计算
- 基础学习笔记之opencv(4):直方图使用学习
- 基础学习笔记之opencv(9):Mat图像扫描
- 基础学习笔记之opencv(11):图像混合
- 基础学习笔记之opencv(21):一个简单有趣的皮肤检测代码
- 基础学习笔记之opencv(1):opencv中facedetect例子浅析