gpt4 book ai didi

c++ - 在 C++ 下的 OpenCV 中提取 RGB channel

转载 作者:行者123 更新时间:2023-11-28 02:24:11 25 4
gpt4 key购买 nike

我正在使用 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 channel 保存为单独的“灰度”图像文件,但我不了解有关单 channel 操作的 OpenCV 文档。任何人都可以建议实现这一目标的方法吗?最好它在计算上不会过于昂贵(逐个像素循环图像不是一种选择 - 我正在处理高达 1280x1064 的 60-230fps 视频,并且所有处理都必须在捕获点完成)。

运行最新的 Debian 测试,如果有任何不同(我认为不应该)。

最佳答案

一旦你有了一个 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 函数可以直接写入一个标准的 vector ,你真的不需要考虑内存管理和其他东西。

关于c++ - 在 C++ 下的 OpenCV 中提取 RGB channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31295548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com