cvConvert是一個函式,用於圖像和矩陣之間的相互轉換。
函式基本定義,函式套用舉例,
函式基本定義
core_c.h :
#define cvConvert( src, dst ) cvConvertScale( (src), (dst), 1, 0 )
cvConvert函式用於圖像和矩陣之間的相互轉換 為什麼要用cvConvert 把IplImage轉為矩陣? 因為IplImage里的數據,你只能用uchar的形式存放,當你需要這些圖像數據看作數據矩陣來運算時,0~255的精度顯然滿足不了要求; 然而CvMat里卻可以存放任意通道數、任意格式的數據,這個機制方便了研究中的這種需求,轉化為矩陣就可以進行更自由的計算。
函式套用舉例
OpenCV可用以下函式顯示一個CvArr類數據mat;
cvNamedWindow("WinName",CV_WINDOW_AUTOSIZE);
cvShowImage("WinName",mat);
cvWaitKey(0);
但往往僅當mat為IIplmage*類型,且其depth為IPL_DEPTH_8U(8bit無符號整形)時,有較好的顯示效果
如下所示
void Show(CvMat* mat)
{
CvSize size = cvSize(mat->width,mat->height);
IplImage* imgBuf = cvCreateImage(size,IPL_DEPTH_8U,1);
cvConvert(mat,imgBuf);
cvNamedWindow("image",CV_WINDOW_AUTOSIZE);
cvShowImage("image",mat);
cvWaitKey(0);
cvReleaseImage(&imgBuf);
}
//轉化成單通道圖像再處理(灰度)
cvCvtColor(pFrame, pBkImg, CV_BGR2GRAY);
cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);
cvConvert(pFrImg, pFrameMat);
cvConvert(pFrImg, pFrMat);
cvConvert(pFrImg, pBkMat);
//將背景轉化為圖像格式,用以顯示
cvConvert(pBkMat, pBkImg);