Обнаружение QR-кода переключает точки полигонов, но почему

#python #qr-code

#питон #qr-код

Вопрос:

У меня проблема с функцией обнаружения от pyzbar. Если я изменю угол наклона QR-кода, то точки polgyon также изменят свое положение, хотя QR-код находится в том же месте.

Мне нужны точки многоугольника для функции getPerspectiveTransform.

Кто-нибудь знает, почему меняются точки многоугольника?

Проблема снова показана на двух следующих рисунках рисунок 1 рисунок 2

 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))