OpenCv не находит шаблон шахматной доски на многих моих изображениях, а Matlab - нет - PullRequest
2 голосов
/ 26 октября 2019

Я делаю калибровку камеры GoPro с OpenCv. Но findChessboardCorners возвращают false на многих моих изображениях, а Matlab - нет. Я пытался бинировать изображения, чтобы помочь OpenCv, но это помогает только в некоторых случаях. Вот пример:

Binirazed sample

Вот код:

CHECKERBOARD = (6,9)
 img = cv2.imread('1.JPG') 
 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

 ret, corners = cv2.findChessboardCorners(gray, CHECKERBOARD, cv2.CALIB_CB_ADAPTIVE_THRESH+cv2.CALIB_CB_FAST_CHECK+cv2.CALIB_CB_NORMALIZE_IMAGE) 
 print(ret)

Я пробовал разные флаги. OpenCv не работает и Matlab нет. Любой намек?

1 Ответ

1 голос
/ 26 октября 2019

Изменение размера изображения, кажется, работает.

Пример кода:

import cv2
import numpy as np

CHECKERBOARD = (6,9)

img = cv2.imread("Q2l11.jpg")
img = cv2.resize(img,(int(400),int(400)))


gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

ret, corners = cv2.findChessboardCorners(gray, CHECKERBOARD, cv2.CALIB_CB_ADAPTIVE_THRESH+cv2.CALIB_CB_FAST_CHECK+cv2.CALIB_CB_NORMALIZE_IMAGE)
print(corners)
#print(ret)

corners = np.int0(corners)

for i in corners:
    x,y = i.ravel()
    cv2.circle(img,(x,y),3,(0,0,255),-1)

cv2.imshow('Corners',img)

cv2.waitKey(0)

Результат: Result of detection

...