我有一些猫的样本图像,其中关键点标记在猫脸上。这是一个示例:
这是一个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)
在原始图像上绘制的关键点如下所示
现在,我想做一件有趣的事情。我想水平翻转图像并将关键点映射到变换后的图像。我可以翻转使用cv2.flip(img,1)
翻转图像,但我没有得到如何相应地转换点。如何在numpy
或scipy
?
答案 0 :(得分:2)
您想要的是围绕图像的垂直轴镜像您的点,以便您的新关键点具有以下坐标:
y_flip = y
x_flip = cv2.shape[1] - 1 - x
您只需更改x
坐标,使其“从右向左”而不是“从左到右”。 -1是考虑pyhton索引规则。