#python #qr-code
#питон #qr-код
Вопрос:
У меня проблема с функцией обнаружения от pyzbar. Если я изменю угол наклона QR-кода, то точки polgyon также изменят свое положение, хотя QR-код находится в том же месте.
Мне нужны точки многоугольника для функции getPerspectiveTransform.
Кто-нибудь знает, почему меняются точки многоугольника?
Проблема снова показана на двух следующих рисунках
while True: _, frame = cap.read() cv2.imshow("Frame", frame) fps = int(cap.get(5)) decodedObjects = decode(frame) for obj in decodedObjects: pts = np.array([obj.polygon], np.int32) pts = pts.reshape((-1,1,2)) cv2.polylines(frame, [pts], True, (255,0,255), 5) Inhalt = obj.data.decode('utf-8') if Inhalt == "1": #print("linker QR Code wurde erkannt") pts_links = np.array([obj.polygon, np.int32]) pts_links = pts_links.reshape((-1,1,2)) pts_links_ol= pts_links[0][0][0][2] pts_links_ul = pts_links[0][0][0][1] #print("Koordinaten des linkes QR-Codes:", pts_links_ol) if Inhalt == "2": #print("rechter QR Code wurde erkannt") pts_rechts = np.array([obj.polygon, np.int32]) pts_rechts = pts_rechts.reshape((-1,1,2)) pts_rechts_ur= pts_rechts[0][0][0][1] pts_rechts_or = pts_rechts[0][0][0][0] #print("Koordinaten des rechten QR-Codes:", pts_rechts_ur) pts1 = pts_links_ol pts2 = pts_links_ul #cv2.circle(frame, pts1, 3, (0, 255,0 ), cv2.FILLED, cv2.LINE_AA); #cv2.circle(frame, pts_rechts_ur, 3, (0, 255,0 ), cv2.FILLED, cv2.LINE_AA); #cv2.circle(frame, pts_rechts_or, 3, (0, 255,0 ), cv2.FILLED, cv2.LINE_AA); #cv2.circle(frame, pts_links_ul, 3, (0, 255,0 ), cv2.FILLED, cv2.LINE_AA); cv2.circle(frame, pts1, 3, (255, 0,0 ), cv2.FILLED, cv2.LINE_AA); #blau cv2.circle(frame, pts2, 3, (0, 255, ), cv2.FILLED, cv2.LINE_AA); #grün #cv2.circle(frame, pts4, 3, (255, 0,0 ), cv2.FILLED, cv2.LINE_AA); #blau #cv2.circle(frame, pts3, 3, (0, 0,255 ), cv2.FILLED, cv2.LINE_AA); #ro width= 250 height= 294 pts1 = np.float32([pts_links_ol, pts_rechts_or, pts_links_ul, pts_rechts_ur]) pts2 = np.float32([[0, 0], [width, 0], [0, height], [width, height]]) matrix1 = cv2.getPerspectiveTransform(pts1, pts2) result1 = cv2.warpPerspective(frame, matrix1, (width, height))