opencv函数和数据类型说明

本文介绍了OpenCV库中关键的图像处理和矩阵操作函数,包括图像的创建、复制、转换及矩阵的基本运算等。通过这些函数,用户能够实现图像区域的设定、图像数据的访问和修改等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://pengjuchen.blog.sohu.com/67270697.html

函数:
cvCreateImageHeader只创建图像信息头,不分配数据单元cvCreateImageData创建分配数据单元,合起来就是:cvCreateImage
cvInitImageHeader可以重新初始化图像头
IplImage*cvCreateImage(CvSizesize,intdepth,intchannels);
voidcvReleaseImage(IplImage**image);
IplImage*cvCloneImage(constIplImage*image);
voidcvSetImageROI(IplImage*image,CvRectrect);
voidcvResetImageROI(IplImage*image);等效于:
cvSetImageROI(image,cvRect(0,0,image->width,image->height));cvSetImageCOI(image,0);
CvRectcvGetImageROI(constIplImage*image);
voidcvCopyImage(IplImage*src,IplImage*dst);//如果目标较小,可自动重新分配单元
voidcvRunningAvg(IplImage*imgY,IplImage*imgU,doublealpha,IplImage*mask=0);
//下面的函数可以在8U、32F之间进行转换
voidcvConvertScale(constCvArr*src,CvArr*dst,doublescale=1,doubleshift=0);
//矩阵与图像之间互相赋值转换
voidcvSetImageData(IplImage*image,void*data,intstep);
voidcvSetData(CvArr*arr,void*data,intstep);//之前HeadershouldbeinitializedbeforeusingcvCreateImageHeader,cvInit*HeaderorcvMat(incaseofmatrix)function
///////////////////////////////
//高速的!:
voidcvGetImageRawData(constIplImage*image,uchar**data,int*step,CvSize*roiSize);
CvMat*cvGetMat(constCvArr*arr,CvMat*header,int*coi=NULL,intallowND=0);
IplImage*cvGetImage(constCvArr*arr,IplImage*image_header);

voidcvSplit(constCvArr*src,CvArr*dst0,CvArr*dst1,CvArr*dst2,CvArr*dst3);

//以下两句联合使用,可以相当于:CvMat*cvCreateMat(introws,intcols,inttype);
CvMat*cvCreateMatHeader(introws,intcols,inttype);
voidcvCreateData(CvArr*arr);
//以下这句可以重新初始化矩阵
voidcvInitMatHeader(CvMat*mat,introws,intcols,inttype,void*data=0,intstep=CV_AUTOSTEP);
CvMat*cvCreateMat(introws,intcols,inttype);
voidcvReleaseMat(CvMat**mat);
CvMat*cvCloneMat(constCvMat*mat);
CvSizecvGetSize(constCvArr*arr);
//读取、设置矩阵元素
doublecvmGet(constCvMat*mat,introw,intcol);
voidcvmSet(CvMat*mat,introw,intcol,doublevalue);

//得到图像或矩阵块中的子矩阵
CvMat*cvGetSubArr(constCvArr*arr,CvMat*subarr,CvRectrect);
//或者得到某元素的字符指针:uchar*cvGetAtPtr(constCvArr*arr,introw,intcol=0);
//得到行、列、对角线子矩阵:cvGetRowcvGetColcvGetDiag

//给矩阵赋值,一般是先创建一个矩阵头,然后把一个数据块的指针用SetData或InitMatHeader给它。另外注意,二者的数据类型必须一致!

voidcvAdd(constCvArr*A,constCvArr*B,CvArr*C,constCvArr*mask=0);
voidcvSub(constCvArr*A,constCvArr*B,CvArr*C,constCvArr*mask=0);
CvScalarcvDet(constCvArr*A);
CvScalarcvTrace(constCvArr*A);
voidcvInvert(constCvArr*A,CvArr*B);
voidcvMulTransposed(constCvArr*A,CvArr*C,intorder);
voidcvFlip(constCvArr*A,CvArr*B,intflipMode);
doublecvDotProduct(constCvArr*src1,constCvArr*src2);
voidcvCrossProduct(constCvArr*src1,constCvArr*src2,CvArr*dst);
voidcvTranspose(constCvArr*src,CvArr*dst);
voidcvFlip(constCvArr*A,CvArr*B,intflipMode);
doublecvDet(constCvArr*mat);
intcvSolve(constCvArr*src1,constCvArr*src2,CvArr*dst,intmethod=CV_LU);
voidcvEigenVV(CvArr*mat,CvArr*evects,CvArr*evals,doubleeps=0);
voidcvSet(CvArr*arr,CvScalarvalue,constCvArr*mask=NULL);
//重新调整矩阵元素(只是指针调整,好像)
CvMat*cvReshape(constCvArr*A,CvMat*header,intnewNumChannels,intnewRows=0);
//一般形式的矩阵运算
voidcvScaleAdd(constCvArr*A,CvScalarS,constCvArr*B,CvArr*C);
voidcvMatMulAdd(constCvArr*A,constCvArr*B,constCvArr*C,CvArr*D);
voidcvMatMulAddS(constCvArr*A,CvArr*C,constCvArr*M,constCvArr*V=0);
voidcvGEMM(constCvArr*src1,constCvArr*src2,doublealpha,constCvArr*src3,doublebeta,CvArr*dst,inttABC=0);

voidcvMinMaxLoc(constCvArr*arr,double*min_val,double*max_val,
CvPoint*min_loc=NULL,CvPoint*max_loc=NULL,constCvArr*mask=NULL);

intcvSolve(constCvArr*src1,constCvArr*src2,CvArr*dst,intmethod=CV_LU);least-squares

数据类型:
CvScalarcvRealScalar
CvPoint
CvPoint2D32f
CvPoint3D32f
CvSize强制类型转换的时候用cvSize
CvRect
CvMat*
CV_RGB(255,255,255)
IplConvKernel*是不是模板核专用的呢??
IplImage*
intnSize;/*sizeof(IplImage)*/
intnChannels;/*MostofOpenCVfunctionssupport1,2,3or4channels*/
intdepth;/*pixeldepthinbits:
intorigin;/*0-top-leftorigin,1-bottom-leftorigin(Windowsbitmapsstyle)*/
intwidth;/*imagewidthinpixels*/
intheight;/*imageheightinpixels*/
struct_IplROI*roi;/*imageROI.whenitisnotNULL,thisspecifiesimageregiontoprocess*/
void*imageId;/*ditto*/
intimageSize;/*imagedatasizeinbytes=image->height*image->widthStep
char*imageData;/*pointertoalignedimagedata*/
intwidthStep;/*sizeofalignedimagerowinbytes*/
IlpImage和CvMat的傻瓜统一形式即是:CvArr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值