我有这张黑白图像,我想将其转换为一个新图像,其中4个角球将形成一个完美的 upright 矩形,并保持原始所有对象之间的所有相对距离图片。
我相信某种轮换可以满足我的要求,但是,作为OpenCV的新手,我不知道该怎么做。据我了解,一个人可以旋转图像,但是我想要的不是旋转整个图像,而是旋转上述矩形的球(以及该矩形内的所有对象)。
任何建议将不胜感激。
预先感谢
答案 0 :(得分:0)
感谢所有评论,这使我走上了正轨。
我已经使用以下Python代码解决了自己的问题:
import cv2
import numpy as np
img = cv2.imread('x.jpg', -1)
h, w = img.shape
img2 = img[:400, :400]
iIndex = np.where(img2 == 0)
xmed1 = np.mean(iIndex[0])
ymed1 = np.mean(iIndex[1])
img2 = img[:400, w-400:]
iIndex = np.where(img2 == 0)
xmed2 = np.mean(iIndex[0])
ymed2 = np.mean(iIndex[1]) + w - 100
angle = np.arctan((xmed2-xmed1)/(ymed2-ymed1))
angle = np.degrees(angle)
m = cv2.getRotationMatrix2D((xmed1,ymed1), angle, 1)
imgR = cv2.warpAffine(img, m, (w, h))
imgR[:, :100] = 255
imgR[:, w - 100:] = 255
imgR[-100:, :] = 255
imgR[:100, :] = 255
cv2.namedWindow('rotated', cv2.WINDOW_KEEPRATIO)
cv2.imshow('rotated', imgR)
cv2.resizeWindow('rotated', 1000, 1000)
cv2.waitKey(0)
cv2.destroyAllWindows()