相关疑难解决方法(0)

使用 OpenCV 的 Python 图像中的颜色百分比

我正在创建一个可以检测图像中绿色百分比的代码。

图像

我对 OpenCV 有一点经验,但对图像处理仍然很陌生,并且需要一些有关我的代码的帮助。我应该如何更改此代码,以便它能够计算绿色而不是棕色的百分比?如果不太麻烦,有人可以解释一下这些更改如何影响代码吗?下面是我想使用的图像的链接。代码归功于@mmensing

import numpy as np
import cv2

img = cv2.imread('potato.jpg')

brown = [145, 80, 40]  # RGB
diff = 20
boundaries = [([brown[2]-diff, brown[1]-diff, brown[0]-diff],
               [brown[2]+diff, brown[1]+diff, brown[0]+diff])]

for (lower, upper) in boundaries:
    lower = np.array(lower, dtype=np.uint8)
    upper = np.array(upper, dtype=np.uint8)
    mask = cv2.inRange(img, lower, upper)
    output = cv2.bitwise_and(img, img, mask=mask)

    ratio_brown = cv2.countNonZero(mask)/(img.size/3)
    print('brown pixel percentage:', np.round(ratio_brown*100, 2))

    cv2.imshow("images", np.hstack([img, output]))
    cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

python opencv image-processing

6
推荐指数
1
解决办法
1万
查看次数

OpenCV:为颜色过滤选择 HSV 阈值

为了从图像中滤除颜色,有必要设置需要检测哪种颜色的边界。我有一种感觉,这主要是一个反复试验的过程。有什么方法可以快速找到特定颜色的正确阈值?在这种特定情况下,我试图检测下图中图形的灰色区域。这当然没有检测到虚线。对于这个例子,我需要非常具体的边界。问题是,我怎样才能轻松找到它们?

hsv = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)

lower = np.array([0, 0, 0], np.uint8)
upper = np.array([180, 255, 200], np.uint8)

mask = cv2.inRange(hsv, lower, upper)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python opencv filtering colors hsv

2
推荐指数
2
解决办法
5282
查看次数

标签 统计

opencv ×2

python ×2

colors ×1

filtering ×1

hsv ×1

image-processing ×1