【OpenCV】分離多通道圖像RGB的值


轉自:http://blog.csdn.net/xiaowei_cqu/article/details/7558657

《訪問圖像中每個像素的值》中我們介紹了存儲圖像的結構體IplImage的數據結構。多通道字節/浮點型圖像中存儲了每個像素RGB三信道的值。

最近在做的項目中需要提取圖像ROI區域RGB的平均值,發現有一個cvAvg函數:

CvScalar cvAvg( const CvArr* arr, const CvArr* mask=NULL );  

可以獨立計算數組每個通道的平均值,非常方便。所以用如下方式即可達到效果:

CvScalar avgChannels = cvAvg(img);    

double avgB=avgChannels.val[0];  

double avgG=avgChannels.val[1];  

double avgR=avgChannels.val[2];  

那如果我們想分離出每個通道的具體值,可以用cvSlip(或cvCvtPixToPlane)函數:

void cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr* dst2, CvArr* dst3 );  

#define cvCvtPixToPlane cvSplit  

如果再想把分離的圖像顯示出來,可以分別create三個單通道的圖像,即:

IplImage* rImg=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);    

IplImage* gImg=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);    

IplImage* bImg=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);   

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM