Я пытаюсь запустить этот проект (https://bitbucket.org/BrianTremaine/coin_detect_opencv/src/master/), потому что я работаю над чем-то похожим, но на самом деле я никогда раньше не работал с файлами yaml. Структура проекта:
- calibrate.py (выходной файл .yaml)
import cv2
import yaml
...
cap = cv2.VideoCapture(0)
found = 0
while(found < 10): # Here, 10 can be changed to whatever number you like to choose
ret, img = cap.read() # Capture frame-by-frame
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Find the chess board corners
ret, corners = cv2.findChessboardCorners(gray, (9,6), None)
# If found, add object points, image points (after refining them)
if ret == True:
objpoints.append(objp) # Certainly, every loop objp is the same, in 3D.
corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)
imgpoints.append(corners2)
# Draw and display the corners
img = cv2.drawChessboardCorners(img, (9,6), corners2, ret)
found += 1
cv2.imshow('img', img)
cv2.waitKey(5000) # 5 sec to move
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)
# It's very important to transform the matrix to list.
data = {'camera_matrix': np.asarray(mtx).tolist(), 'dist_coeff': np.asarray(dist).tolist()}
with open("calibration.yaml", "w") as f:
yaml.dump(data, f)
# You can use the following 4 lines of code to load the data in file "calibration.yaml"
# with open('calibration.yaml') as f:
# loadeddict = yaml.load(f)
# mtxloaded = loadeddict.get('camera_matrix')
# distloaded = loadeddict.get('dist_coeff')
файл yaml detecoin.py (входные данные - файл .yaml)
Моя проблема: при запуске первого файла calibrate.py камера запускается нормально, но я не получаю вывод, как ожидалось, и из-за этого я не могу запустить основную программу detecoin.py. Я создал пустой файл calibre.yaml, но это не помогло. Мне нужно что-то написать в этом файле yaml или, как это вообще работает?
Спасибо,