如何仅获取旋转矩形的四个角?

2024-05-19 01:35:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我用这段代码来检测矩形的四个角,但是由于像素波,我得到了下面的输出,这意味着我得到了很多点,我怎么能只得到四个角(上右、上左、下右、下左)而不是所有像素波

注意我将opencv与python一起使用

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
low_red1 = np.array([0,70,25])
high_red1 = np.array([10,255,255])

low_red2 = np.array([160,70,25])
high_red2 = np.array([180,255,255])

mask0 = cv2.inRange(hsv, low_red1, high_red1)
mask1 = cv2.inRange(hsv, low_red2, high_red2)
mask = mask0+mask1
cv2.imshow("mask", mask)

contours,_ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,200,0),1)

for c in contours:
    approx = cv2.approxPolyDP(c, 0.009 * cv2.arcLength(c, True), True)    
    cv2.drawContours(img, [approx], 0, (255, 0, 0), 1)
    n = approx.ravel()
    k = 0
    for j in n :
        if(k % 2 == 0):
            x = n[k]
            y = n[k + 1]
            cv2.circle(img, (x,y), 3, (255, 0, 0), -1)    
        k = k+1

cv2.imshow("corners", img)

the output


Tags: imgnpmask像素arraycv2hsvlow

热门问题