相关疑难解决方法(0)

从 Python 中的图像中提取特定颜色范围的简单方法?

我正在尝试使用 cv2 模块从定义的 RGB 范围内的图像中提取特定颜色。在下面的示例中,我试图将火焰与黄色和白色 RGB 值之间的航天飞机排气隔离,然后打印出该范围内与图像其余部分相比的 RGB 值百分比。

这是我的最小工作示例:

import cv2
import numpy as np
from matplotlib import pyplot as plt
import imageio

img = imageio.imread(r"shuttle.jpg")
plt.imshow(img)
Run Code Online (Sandbox Code Playgroud)

这是输出图像。它来自维基百科。

在此处输入图片说明

img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

color1 = (255,255,0) #yellow
color2 = (255,255,255) #white
boundaries = [([color1[0], color1[1], color1[2]], [color2[0], color2[1], color2[2]])]
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 = cv2.countNonZero(mask)/(img.size/3)
    print('pixel percentage:', np.round(ratio*100, 2)) …
Run Code Online (Sandbox Code Playgroud)

opencv image-processing python-3.x cv2

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

标签 统计

cv2 ×1

image-processing ×1

opencv ×1

python-3.x ×1