[英]Extracting RGB channels in OpenCV under C++
我正在使用OpenCV,使用以下代碼將使用IDS uEye攝像機捕獲的圖像數據轉換成有用的格式:
IplImage* tmpImg = cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,3);
tmpImg->imageData = pFrameBuffer[k];
frame = cv::cvarrToMat(tmpImg);
這很完美-我可以使用imwrite(filename,frame);
再往下游,將處理后的圖像寫成明智的格式。 理想情況下,我希望能夠將RGB通道另存為單獨的“灰度”圖像文件,但是我不了解有關單通道操作的OpenCV文檔。 誰能建議實現這一目標的方法? 最好不要在計算上花費過多(逐個圖像循環不是一個選擇-我正在以1280x1064的分辨率處理60-230fps的視頻,並且所有處理都必須在捕獲時完成)。
如果可以運行最新的Debian Testing,那有什么不同(我不認為應該這樣做)。
一旦有了cv::Mat
對象,它就非常簡單:
std::vector<cv::Mat> grayPlanes;
cv::split(frame, grayPlanes);
cv::imwrite("blue.png", grayPlanes[0]);
cv::imwrite("green.png", grayPlanes[1]);
cv::imwrite("red.png", grayPlanes[2]);
split函數可以直接寫入標准向量,而您實際上不必考慮內存管理和其他內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.