gpt4 book ai didi

opencv - 在 OpenCV 中对 RGB 图像进行阈值处理

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:08 26 4
gpt4 key购买 nike

我有一张彩色图像,我想在 OpenCV 中设置一个阈值。我想要的是,如果任何 RGB channel 低于某个值,则将所有 channel 中的值设置为零(即黑色)。

因此,我将 opencv 阈值函数用作:

cv::Mat frame, thresholded
// read frame somewhere, it is a BGR image.
cv::threshold(frame, thresholded, 5, 255, cv::THRESH_BINARY);

所以,我认为这会做的是,如果任何 channel 小于 5,我认为它会将它们设置为零。但是,它似乎不是那样工作的。例如,我看到其中一些区域只有绿色 channel 通过,表明并非所有 channel 都设置为 0。

有没有办法使用 OpenCV 快速实现这一目标?

最佳答案

可以使用函数 cv::inRange 对彩色图像进行阈值处理.

void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst)

例如,您可以只允许介于 (0, 125, 0) 和 (255, 200, 255) 之间的值,或者单个 channel 的任何值:

cv::Mat image = cv::imread("bird.jpg");

if (image.empty())
{
std::cout << "> This image is empty" << std::endl;
return 1;
}

Original image

cv::Mat output;
cv::inRange(image, cv::Scalar(0, 125, 0), cv::Scalar(255, 200, 255), output);
cv::imshow("output", output);

Output image

关于opencv - 在 OpenCV 中对 RGB 图像进行阈值处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26218280/

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