我的python代码通过桌面截图,并在黑色背景上寻找红色矩形,当我使用cv2.findcountours时,它没有返回确切尺寸的矩形,它似乎失真了。我想获取形状的确切区域。另外,屏幕快照上的图像没有像素,边框也很清晰。
谢谢你的帮助!
frame_TS_new_raw = np.array(sct.grab(monitor_TS_new))
frame_TS_new = cv2.cvtColor(frame_TS_new_raw, cv2.COLOR_RGBA2RGB)
green_mask_TS_new = cv2.inRange(frame_TS_new,green_lower_range, green_upper_range)
# find contours for New TS
cnts_green_new = cv2.findContours(green_mask_TS_new.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cnts_green_new = cnts_green_new[0] if imutils.is_cv2() else cnts_green_new[1]
if len(cnts_green_new) > 0:
for c in cnts_green_new:
# if the contour is not sufficiently large, ignore it
if cv2.contourArea(c) > 100:
area = cv2.contourArea(c)
已屏蔽和未屏蔽的屏幕截图
左边的图像是原始屏幕截图,右边的图像是蒙版。
最佳答案
要在图像中找到红色矩形的区域,您可以执行以下操作:
示例代码:
import cv2
import numpy as np
img = cv2.imread('vju0v.png')
img = np.array(img) # convert to numpy array
red = img[:,:,2] # extract red channel
rect = np.float32(red > 200) # find red pixels
area = np.sum(rect) # count nonzero pixels
print('Area = ' + str(area))
cv2.imshow('Red Channel',rect)
cv2.waitKey(0)