簡體   English   中英

在C ++下在OpenCV中提取RGB通道

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM