Файл Yaml как вход и выход проекта python - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь запустить этот проект (https://bitbucket.org/BrianTremaine/coin_detect_opencv/src/master/), потому что я работаю над чем-то похожим, но на самом деле я никогда раньше не работал с файлами yaml. Структура проекта:

  1. 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 или, как это вообще работает?

Спасибо,

...