Я сейчас пытаюсь спроецировать черную точку на следующем изображении:
![enter image description here](https://i.stack.imgur.com/miAGM.png)
Для 2D плоскости на следующем изображении:
![enter image description here](https://i.stack.imgur.com/3B3ab.png)
Для "pts_dst" я использую следующие координаты:
![enter image description here](https://i.stack.imgur.com/oGzlP.png)
С точками для фотографии поля, взятой из того же места.
Мой код выглядит следующим образом:
import cv2
import numpy as np
if __name__ == '__main__':
# Read source image.
im_src = cv2.imread('field2.png')
# Four corners of the book in source image
pts_src = np.array([[436, 181], [319, 181], [539, 314], [180, 312]])
# Read destination image.
im_dst = cv2.imread('field1.png')
# Four corners of the book in destination image.
pts_dst = np.array([[297, 233], [297, 139], [55, 234], [54, 139]])
# Calculate Homography
h, status = cv2.findHomography(pts_src, pts_dst)
# provide a point you wish to map from image 1 to image 2
a = np.array([[493, 274]], dtype='float32')
a = np.array([a])
pointsOut = cv2.perspectiveTransform(a, h)
# Display image
cv2.imshow("Warped Source Image", pointsOut)
cv2.waitKey(0)
Но я сталкиваюсь со следующей ошибкой:
cv2.imshow ("Искаженное исходное изображение", pointsOut)
cv2.error: OpenCV (3.4.2)
/io/opencv/modules/imgcodecs/src/utils.cpp:622: ошибка: (-15: неверный номер
каналов) Исходное изображение должно иметь 1, 3 или 4 канала в функции
'CvConvertImage'
По какой-то причине мне было очень трудно решить эту проблему - вероятно, поскольку я новичок в OpenCV - но я не могу решить ее.
Похоже, это относится к
pointsOut = cv2.perspectiveTransform(a, h)
Я нашел этот ответ на похожий вопрос, но он не решает мою проблему, поскольку у меня уже есть его с плавающей запятой.
Есть ли у кого-нибудь какие-либо предложения относительно того, что я делаю неправильно, или как лучше подходить к решению этой проблемы, если я не могу сделать это с perspectiveTransform()
?
РЕДАКТИРОВАТЬ: я нашел это решение , но когда я добавляю дополнительные скобки, он выдает новую ошибку.
pointsOut = cv2.perspectiveTransform (a, h) cv2.error: OpenCV (3.4.2)
/io/opencv/modules/core/src/matmul.cpp:2268: ошибка: (-215: утверждение
не удалось) scn + 1 == m.cols в функции'pectiveTransform '
Я также пытался преобразовать оба изображения в оттенки серого перед обработкой, но все еще получал ошибку канала.