Warum funktioniert mein Ecken -Erkennungscode nicht?Python

Python-Programme
Anonymous
 Warum funktioniert mein Ecken -Erkennungscode nicht?

Post by Anonymous »

Ich möchte eine Kamera -Kalibrierung mit einem Schachbrett durchführen. Und um dies zu tun, habe ich Code basierend auf einigen Eckerkennungsskripten entwickelt, die ich im Internet gefunden habe. Das gleiche Skript kann jedoch nicht in der Lage sein, Ecken auf anderen Schachbrettern zu erkennen, deren Bilder mit zwei anderen Kameras aufgenommen wurden (sagen wir Camera 2 und Camera 3). Zum Beispiel habe ich das Skript auf demselben Bild ausprobiert, während ich die Größe meiner angegebenen Schachbrett variiert habe, aber dieser Versuch ist fehlgeschlagen. Ich habe auch versucht, Bilder einen anderen Tag des Tages aufzunehmen (weil ich mich gefragt habe, ob die Umgebungsleuchtkraft die Erkennung beeinflusst), aber mit meinen fehlgeschlagenen Tests war das Problem nicht da. /> camera2_chessboard < /p>
camera3_chessboard < /p>
Hier ist mein Code: < /p>

Code: Select all

import numpy as np
import cv2 as cv
import glob
import pickle
import os

chessboardSize = (50,15) # Nombre de coins dans chaque direction du damier

# Critère d'arrêt des itérations de recherches de coins
# 30 itérations max ou erreur entre 2 itérations < 0.001
criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 30, 0.001)

threedpoints = []   # Vecteur de points 3D
twodpoints = []     # Vecteur de points 2D

objectp3d = np.zeros((1, chessboardSize[0]*chessboardSize[1], 3), np.float32)
objectp3d[0, :, :2] = np.mgrid[:chessboardSize[0], :chessboardSize[1]].T.reshape(-1,
2)

path = "Camera2.jpeg"

image = cv.imread(path)
img_gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)

# Si nombre de coin attendu est trouvé alors return cornersFound = True
cornersFound, corners = cv.findChessboardCorners(img_gray, chessboardSize, None)
# If found, add object points, image points (after refining them)
print(cornersFound)
if cornersFound == True:
threedpoints.append(objectp3d)
corners2 = cv.cornerSubPix(img_gray,corners, (11,11), (-1,-1), criteria)
twodpoints.append(corners2)
# Draw and display the corners
for corner in corners2:
x, y = corner.ravel()
cv.circle(image, (int(x), int(y)), 4, (0, 0, 255), -1)

####################### Nomenclature de l'image avec coins détectés
#########################################################
directory, file = os.path.split(path)
base_name, _ = os.path.splitext(file)

new_format = ".jpg"
coin_name = f"{base_name}_Corners{new_format}"
cv.imshow('img', image)
cv.waitKey(0)
cv.imwrite(coin_name, image)
cv.destroyAllWindows()

ret, cameraMatrix, dist, rvecs, tvecs = cv.calibrateCamera(threedpoints, twodpoints,
img_gray.shape[::-1], None, None)

print("\nCamera Calibrated: ", ret) # ret est l'erreur de calibration
print("\nCamera Matrix:\n", cameraMatrix)
print("\nDistorsion Coefficients:\n", dist)
# print("\nRotation Vectors:\n", rvecs)
# print("\nTranslation Vectors:\n", tvecs)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post