猿问

用numpy计算坐标的新位置

我有一个用于关键点检测的图像数据集。每个图像都标有一个关键点 (x|y)。

我使用 numpy 来翻转图像以进行数据增强。

我使用以下代码水平翻转图像:

img = img[:, ::-1]

与此代码垂直

 img = img[::-1]

到现在为止还挺好。但我还必须重新计算关键点(标签)([85 35])我知道它的基本数学,但我还没有找到解决方案。


喵喵时光机
浏览 176回答 3
3回答

子衿沉夜

使用旋转矩阵:x_new = x_old * np.cos(alpha) - y_old * np.sin(alpha) y_new = x_old * np.sin(alpha) + y_old * np.cos(alpha)Alpha 是以弧度为单位的旋转角度,但我不知道是什么给出了img = img[:, ::-1])))

浮云间

如果您要翻转 180° 度(普通垂直或水平),则不需要旋转矩阵。只需获取图像的形状。X = img.shape[1] y = img.shape[0]水平翻转时重新计算 X 位置。X_Position_New = X - X_Position_Old垂直翻转时重新计算 Y 位置。Y_Position_New = Y - Y_Position_Old

慕娘9325324

如果水平翻转图像,那么距左侧 85 个单位的像素将距右侧 85 个单位。垂直翻转也是如此,距离顶部 35 个单位将是距离底部 35 个单位。因此,现在您可以借助img.shape图像的大小来计算位置,也可以使用可以使用负索引访问图像的事实。所以点将[85 35]是点[-85 35]或[width_of_image-85 35]
随时随地看视频慕课网APP

相关分类

Python
我要回答