尝试获取图像 B,如下所示,但下面的代码给出图像 A [遵循 https://pyimagesearch.com/2021/10/06/opencv-contour-approximation/ 的教程]。mask 指的是绿色区域。
cnts = cv2.findContours(mask.copy(), mode=cv2.RETR_EXTERNAL, method=cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)
eps = 0.001
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, eps * peri, True)
#here np.array of shape [4,1,2] is got.
output = mask.copy()
cv2.drawContours(output, [approx], -1, (0, 255, 0), 3)
(x, y, w, h) = cv2.boundingRect(c)
cv2.putText(output, text, (x, y - 15), cv2.FONT_HERSHEY_SIMPLEX,0.9, (0, 255, 0), 2)
cv2.imshow("Approximated Contour", output)
cv2.waitKey(0)]
Run Code Online (Sandbox Code Playgroud)
如何获得图像B?我认为 drawContours() 不应该用线连接点,但不知道如何获得它。Opencv链接https://docs.opencv.org/3.4/d4/d73/tutorial_py_contours_begin.html不显示获取图像B的代码
尝试这个:
import numpy as np
import cv2
img = cv2.imread('corner.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
corners = cv2.goodFeaturesToTrack(gray, 100, 0.01, 10)
corners = np.int0(corners)
for corner in corners:
x,y = corner.ravel()
cv2.circle(img,(x,y),3,255,-1)
cv2.imshow('Corner',img)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)