Как мне не искажать изображения с помощью матрицы камеры? - PullRequest
0 голосов
/ 13 июня 2019

Экстремальный питон нуб здесь.Я пытаюсь откалибровать камеру на моем Raspberry Pi, чтобы исправить искажения.Я успешно сгенерировал матрицу камеры и коэффициенты искажения, но теперь у меня возникают проблемы с их использованием для генерации неискаженных изображений.

Вот код.image0 - это картинка, которую я пытаюсь неискажать:

import numpy as np
import cv2
import os

# Define Camera Matrix
mtx =  np.array([[2.19605891e+03, 0, 1.01476828e+03],
                 [0, 2.21128295e+03, 6.35922558e+02],
                 [0, 0, 1]])

# Define distortion coefficients
dist = np.array([-1.10335088e-01, 8.29479393, 9.69372290e-04, 
                 -3.88984964e-03, -8.36301163e+01])

# Getting the new optimal camera matrix
img = cv2.imread('image0.jpg')
h, w = img.shape[:2]
newcameramtx, roi = cv2.getOptimalNewCameraMatrix(mtx,dist,(w,h),1, 
                    (w,h))

# Checking to make sure the new camera materix was properly generated
print(newcameramtx)

# Undistorting
dst = cv2.undistort(img, mtx, dist, None, newcameramtx)

# Cropping the image
x,y,w,h = roi
dst = dst[y:+y+h, x:x+w]
cv2.imwrite('calibresult.png',dst)

Код не дает мне никаких ошибок, но всякий раз, когда я пытаюсь открыть предположительно неискаженное изображение, он говорит мне: Image file '/home/pi/calibresult.png' contains no data.

Я не знаю, почему изображение не генерируется должным образом.

...