在OpenCV中对图像进行阈值处理,以获得最大值和最小值的范围

时间:2014-03-07 02:22:03

标签: opencv

我喜欢在最大值和最小值范围内对图像进行阈值处理,并使用255填充剩余的图像,以获得该范围之外的像素值。我在OpenCV文档here中找不到这样的阈值。 感谢

2 个答案:

答案 0 :(得分:14)

inRange(src, lowerBound, upperBound, dst);
bitwise_not(src, src);

答案 1 :(得分:6)

基本:

threshold(src, dst, threshold value, max value, threshold type);

,其中

src_gray: Our input image
dst: Destination (output) image
threshold_value: The thresh value with respect to which the thresholding operation is made
max_BINARY_value: The value used with the Binary thresholding operations (to set the chosen pixels)
threshold_type: One of the 5 thresholding operations. 

所以,例如,

threshold(image, fImage, 125, 255, cv::THRESH_BINARY);

表示低于125的每个值都将设置为零,高于125表示值为255。

如果您要查找的是具有特定范围,例如50到150,我建议您进行for循环,并自行检查和编辑像素。这很简单。看看我的这个c ++代码:

for (int i=0; i< image.rows; i++)
    { 
        for (int j=0; j< image.cols; j++)
        {
            int editValue=image.at<uchar>(i,j);

            if((editValue>50)&&(editValue<150)) //check whether value is within range.
            {
                image.at<uchar>(i,j)=255;
            }
            else
            {
                image.at<uchar>(i,j)=0;
            }
        }
    }

希望我解决了你的问题。干杯(:如果您需要更多帮助,请发表评论。