1) IplImage* cvCreateImage( CvSize size, int depth, int channels );
2) IplImage* cvCloneImage( const IplImage* image );
在使用函數之前,不用內存,即不用。該函數會自己開一段內存,然后復制好image里面的數據,然后把這段內存中的數據返回.
例如
IplImage *src;
IplImage *dst;
dst = cvCloneImage(src);
就是直接把src這個圖像復制給dst,不用給dst內存空間了,即不用寫dst = cvCreateImage(cvGetSize(src),8,3).
3)void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
src
輸入圖像.
dst
輸出圖像.
element
用於腐蝕的結構元素。若為 NULL, 則使用 3×3 長方形的結構元素
iterations
腐蝕的次數
函數 cvErode 對輸入圖像使用指定的結構元素進行腐蝕,該結構元素決定每個具有最小值象素點的鄰域形狀:
dst=erode(src,element): dst(x,y)=min((x',y') in element))src(x+x',y+y')
函數可以是本地操作,不需另外開辟存儲空間的意思。腐蝕可以重復進行 (iterations) 次. 對彩色圖像,每個彩色通道單獨處理。
CreateStructuringElementEx 創建結構元素;ReleaseStructuringElement 刪除結構元素。
4) void cvAbsDiff( const CvArr* src1, const CvArr* src2, CvArr* dst );
OpenCV 中計算兩個數組差的絕對值的函數。
void cvAbsDiff( const CvArr* src1, const CvArr* src2, CvArr* dst );
src1
第一個原數組
src2
第二個原數組
dst
輸出數組
函數 cvAbsDiff 計算兩個數組差的絕對值
dst(I)c = abs(src1(I)c - src2(I)c).
所有數組必須有相同的數據類型相同的大小(或ROI大小)
5)void cvThreshold( const CvArr* src, CvArr* dst, double threshold, double max_value, int threshold_type );
對於圖像中的某一像素點 P(x, y), 在我們正常的坐標系中,x代表其橫坐標,y代表其縱坐標,而在opencv的函數 cvGet2D()與cvSet2D() 中,卻行不通。cvGet2D() 的函數原型是 : CvScalar cvGet2D (const CvArr * arr, int idx0, int idx1); 函數返回的是一個CvScalar 容器,其參數中也有兩個標的目標的坐標,但跟我們通俗習慣的坐標不一樣的是,idx0代表是的行,即高度,對應於我們通俗坐標系的y, idx1代表的是列,即寬度,對應於我們通俗坐標系的x,cvSet2D() 也類似。所以在應用cvSet2D() 與 cvGet2D() 時,切切要重視坐標的次序。
cvGet?D用於獲取數組中指定下標的元素值,cvSet?D用於為數組中指定下標的元素賦予值。
以cvGet2D和cvSet2D為例:
CvScalar cvGet2D (const CvArr * arr, int idx0, int idx1);
void cvSet2D (const CvArr * arr, int idx0, int idx1, CvScalar value);
索引值idx0代表數組元素的行下標,idx1代表數組元素的列下標。
與OpenCV中圖像坐標系相對應,idx0,idx1表示的是圖像上指定高度和寬度值位置處所對應的像素值。
因此,在使用時,需要依照如下的方式進行:
1 for (int y = 0; y < height; y++) { 2 3 for (int x = 0; x < width; x++) 4 5 CvScalar cs = cvGet2D(img, y, x); 6 7 cvSet2D(img, y, x, cs); 8 9 }
12) cvMat
1 #include <highgui.h> 2 3 #include <cv.h> 4 5 int main(int argc, char **argv) 6 7 { 8 9 if (argc != 2) 10 11 return -1; 12 13 /*強制轉換為灰度圖像*/ 14 15 IplImage *img = cvLoadImage(argv[1], 0); 16 17 cvNamedWindow("example"); 18 19 cvShowImage("example", img); 20 21 cvWaitKey(0); 22 23 cvReleaseImage(&img); 24 25 cvDestroyWindow("example"); 26 27 return 0; 28 29 }