python-opencv 旋转图片后图片中目标框位置信息的

旋转一定角度的方法有两种

方法一:


M = cv2.getRotationMatrix2D((cx, cy), angle, 1)
(im_h, im_w) = image.shape[:2]
(cX, cY) = (im_w // 2, im_h // 2)
# img = np.array(img)
cos_ = np.abs(M[0, 0])
sin_ = np.abs(M[0, 1])
nW = int((im_h * sin_) + (im_w * cos_))
nH = int((im_h * cos_) + (im_w * sin_))
M[0, 2] += (nW / 2) - cX
M[1, 2] += (nH / 2) - cY
r_img = cv2.warpAffine(image, M, (nW, nH))

旋转后原图整个信息都在,为了保证旋转之后原图完整存留,需要重新计算旋转后的图片大小,原图之外会padding 0

方法二:

M = cv2.getRotationMatrix2D((cx, cy), angle, 1)
r_img = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))

旋转之后的图片保持原图大小,所以原图信息不会完整保存,意味着边缘部分将被截断

在目标检测训练过程中两种方法都可取,但为了不错过目标信息,我一般用第一种方法,但是在截图目标框的时候,方法一旋转之后,目标框对应位置也变了,但是方法二因为与原图保持大小一致,所以旋转之后的目标框可以直接裁取。

原图:

方法一旋转之后:

方法二旋转之后:

裁剪目标框:

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用PythonOpenCV拼接多张带角度的图片时,可以按照以下步骤进行操作: 首先,导入OpenCV库和NumPy库,确保安装了这两个库。 接下来,读取多张图片,可以使用OpenCV的cv2.imread()函数,将图片路径作为参数传入,读取图片并储存在变量。 然后,使用OpenCV的cv2.resize()函数,将所有的图片统一调整为相同的大小,以便进行拼接。可以选择将目标图片的大小作为参数传入,也可以指定一个统一的大小。 接下来,对于所有的图片,例如可以先选择其一张作为基准图像,然后将其他图片与基准图像进行角度旋转的拼接。可以使用OpenCV的cv2.warpAffine()函数,传入待旋转图片旋转矩阵和目标大小作为参数。旋转矩阵可以使用OpenCV的cv2.getRotationMatrix2D()函数,将旋转心、旋转角度和缩放因子作为参数传入。 最后,将拼接后的图片保存为新的图片文件,可以使用OpenCV的cv2.imwrite()函数,传入保存路径和拼接后的图片作为参数进行保存。 需要注意的是,拼接的结果可能受到图片的尺寸、角度差异等因素的影响,因此在实际操作可能需要进行一些调整,例如调整拼接顺序、调整旋转心、调整旋转角度等。 总结起来,通过读取和调整多张带角度的图片大小,然后进行角度旋转并拼接,最后保存拼接后的图片,就可以实现PythonOpenCV拼接多张带角度图片的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值