Как построить надежную функцию калибровки камеры с помощью OpenCV с FindCirclesGrid и SimpleBlobDetector?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как построить надежную функцию калибровки камеры с помощью OpenCV с FindCirclesGrid и SimpleBlobDetector?

Сообщение Anonymous »

Я работаю над калибровочным трубопроводом камеры, используя OpenCV, где рисунок представляет собой точечную сетку (круглую сетку). Я использую cv2.findcirclesgrid () в сочетании с CV2.SimpleBlobDectector для обнаружения блоба. Блэк). и фокусировки. /> < /li>
может надежно обнаружить сетки круга в разнообразных условиях. < /p>
< /li>
поддерживает автоматическую инверсию или препроцессы, как Clahe, размытие и т. Д. < /p>
< /li>
. Пространства.

Код: Выделить всё

import cv2
import numpy as np
import matplotlib.pyplot as plt`

image = cv2.imread("/content/drive/MyDrive/image0000005.bmp")  # Use your actual image path
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

gray_inverted = cv2.bitwise_not(gray)

params = cv2.SimpleBlobDetector_Params()
params.filterByArea = True
params.filterByCircularity = True
params.maxArea = 70000;
params.minArea = 60000;
params.minThreshold = 5;
params.maxThreshold = 255;
params.thresholdStep = 50;
params.minCircularity = 0.8;
params.filterByInertia = False;
params.filterByConvexity = True;
params.minConvexity = 0.01

detector = cv2.SimpleBlobDetector_create(params)

def find_grid(gray_img):
pattern_size = (4,4)  # Adjust to your pattern
found, centers = cv2.findCirclesGrid(
gray_img,
pattern_size,
flags=cv2.CALIB_CB_SYMMETRIC_GRID | cv2.CALIB_CB_CLUSTERING,
blobDetector=detector
)
return found, centers

found, centers = find_grid(inverted)
if not found:
print("Trying inverted image...")
found, centers = find_grid(inverted)

output = inverted.copy()
if found:
pattern_size = (4,4)
cv2.drawChessboardCorners(output, (4,4), centers, found)
print("✅ Circle grid detected!")

print("\n=== detected center ===")
print(centers)

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

object_points = [objp]  # 3D world coordinates
image_points = [centers]  # 2D detected points
image_size = (image.shape[1], image.shape[0])  # (width, height)

ret, camera_matrix, dist_coeffs, _, _ = cv2.calibrateCamera(
object_points, image_points, image_size, None, None
)
print("\n=== 📸 Camera Calibration Results ===")
print("🔹 RMS Reprojection Error:", ret)
print("🔹 Camera Matrix:\n", camera_matrix)
print("🔹 Distortion Coefficients:\n", dist_coeffs)
else:
print("❌ Could not detect circle grid.")

fig, ax = plt.subplots(1, 2, figsize=(14, 6))
ax[0].imshow(cv2.cvtColor(inverted, cv2.COLOR_BGR2RGB))
ax[0].set_title("Original Grayscale")
ax[0].axis("off")

ax[1].imshow(cv2.cvtColor(output, cv2.COLOR_BGR2RGB))
ax[1].set_title("Detected Grid" if found else "Detection Failed")
ax[1].axis("off")
plt.tight_layout()
plt.show()



Подробнее здесь: https://stackoverflow.com/questions/795 ... ndcirclesg
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка выполнения калибровки корпуса белого калибровки с использованием Quantlib в Python
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Преобразование перспективы с высоты птичьего полета из калибровки камеры opencv python
    Гость » » в форуме Python
    0 Ответы
    53 Просмотры
    Последнее сообщение Гость
  • Python OpenCV повышает точность калибровки камеры
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • OpenCV повышает точность калибровки камеры
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как сделать возвратное значение функции калибровки камеры OpenCV менее 1?
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»