opencv 找到numpy中绿色像素最大部分的位置

jucafojl  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(166)

我有一个程序,它可以为屏幕截图中的绿色像素创建一个遮罩(img)。我需要得到这些像素在图像中最大部分的近似位置。什么是获得此信息的最佳方法?
图片:

获取掩码的代码(np是numpy,cv2是OpenCV):

# define the list of color boundaries
boundaries = [
    ([0, 100, 0], [100, 255, 100]), # green
]

# loop over the boundaries
for (lower, upper) in boundaries:
    # create NumPy arrays from the boundaries
    lower = np.array(lower, dtype = "uint8")
    upper = np.array(upper, dtype = "uint8")
    # find the colors within the specified boundaries and apply the mask
    mask = cv2.inRange(img, lower, upper)
    output = cv2.bitwise_and(img, img, mask = mask)
jm81lzqq

jm81lzqq1#

您可以使用cv2.findContourscv2.boundingRect组合来获得最大绿色区域的边框

import cv2

img = cv2.imread('game.png')
mask = cv2.inRange(img, (0, 100, 0), (100, 255, 100))

contours, _ = cv2.findContours(mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
rects = map(cv2.boundingRect, contours)

# f[2] = width, f[3] = height
biggest = max(rects, key=lambda f: f[2]*f[3])

cv2.rectangle(img, biggest, (255, 0, 0),  2)
    • 结果:**

相关问题