旋转关键点numpy数组

时间:2018-04-04 19:46:39

标签: python numpy opencv scipy

我有一些猫的样本图像,其中关键点标记在猫脸上。这是一个示例:

Original image

这是一个224x224的图像,关键点是numpy数组,坐标如下:

x: array([156.625  , 166.25   , 163.625  , 145.90625, 148.3125 , 154.875  ,
       164.71875, 172.375  , 168.65625], dtype=float32)
y: array([67.690506, 67.690506, 81.09781 , 58.861313, 41.20292 , 53.629196,
       53.629196, 43.49197 , 59.84234 ], dtype=float32)

在原始图像上绘制的关键点如下所示

Original image with keypoints plotted

现在,我想做一件有趣的事情。我想水平翻转图像并将关键点映射到变换后的图像。我可以翻转使用cv2.flip(img,1)翻转图像,但我没有得到如何相应地转换点。如何在numpyscipy

中执行此操作

1 个答案:

答案 0 :(得分:2)

您想要的是围绕图像的垂直轴镜像您的点,以便您的新关键点具有以下坐标:

y_flip = y
x_flip = cv2.shape[1] - 1 - x

您只需更改x坐标,使其“从右向左”而不是“从左到右”。 -1是考虑pyhton索引规则。