繁体   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