繁体   English   中英

在 OpenCV Python 中打印图像中颜色的百分比

[英]Printing the percentage of a color in an image in OpenCV Python

我有这个 python 脚本,它接收图像并输出该图像中绿色和棕色的百分比。 我需要帮助来理解下面陈述的行,因为我想用另一种语言实现这段代码。

    img = cv2.imread('__FILE_LOCATION__')
    grid_HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

    lower_green = np.array([25,52,72])
    upper_green = np.array([102,255,255])

    lower_brown = np.array([10, 100, 20])
    upper_brown = np.array([20, 255, 200])

    mask= cv2.inRange(grid_HSV, lower_green, upper_green)
    brown_mask= cv2.inRange(grid_HSV, lower_brown, upper_brown)

    print(str(round(((mask>0).mean())*100,3)))                 #<- This line
    print(str(round(((brown_mask>0).mean())*100,3)))           #<- and This line

    # what is "mask>0" part, ".mean()" part and why multiply with 100

下面是我上面的python代码的Java实现。 它只是缺少百分比计算部分。 我需要帮助来完成这项工作。

    oImage = imread(pathOfFile);
    hsvImage = new Mat();
    color_range1 = new Mat();
    color_range2 = new Mat();

    Imgproc.cvtColor(oImage, hsvImage, Imgproc.COLOR_BGR2HSV);
    Core.inRange(hsvImage, new Scalar(25,52,72), new Scalar(102,255,255), color_range1); // Green
    Core.inRange(hsvImage, new Scalar(10, 100, 20), new Scalar(20, 255, 200), color_range2); // Brown



    // Finding percentage of green and brown colors from above masks.



    color_range1.release();
    color_range2.release();
    hsvImage.release();
    oImage.release();

获取您的蒙版,然后将具有颜色匹配(非零)的像素数除以像素总数(蒙版数组的大小)乘以 100。四舍五入到第一个小数位也很好:

round(np.count_nonzero(mask) / np.size(mask) * 100, 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM