东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3305|回复: 1
打印 上一主题 下一主题

[学习笔记] 035、imgaug图像增强之keypoint变换

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14429
QQ
跳转到指定楼层
楼主
发表于 2020-1-13 17:16:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式



035、imgaug图像增强之keypoint变换


imgaug支持在图像变换的同时变换图像中的关键点





  1. # -*- coding: utf-8 -*-
  2. __author__ = u'东方耀 微信:dfy_88888'
  3. __date__ = '2020/1/13 16:21'
  4. __product__ = 'PyCharm'
  5. __filename__ = '02_keypoint变换'

  6. import imgaug as ia
  7. import imgaug.augmenters as iaa
  8. import numpy as np
  9. import imageio

  10. print(ia.__version__)
  11. # imgaug支持在图像变换的同时变换图像中的关键点

  12. img_path = 'dfy_imgs/ai111.jpg'
  13. img = imageio.imread(img_path)
  14. print(type(img), img.shape)
  15. ia.seed(666)

  16. # 定义4个关键点
  17. keypoints = ia.KeypointsOnImage([
  18.     ia.Keypoint(x=65, y=100),
  19.     ia.Keypoint(x=75, y=200),
  20.     ia.Keypoint(x=100, y=100),
  21.     ia.Keypoint(x=200, y=80)
  22. ], shape=img.shape)
  23. print(type(keypoints), keypoints.shape)

  24. # 定义一个变换序列
  25. seq = iaa.Sequential([
  26.     iaa.Multiply(mul=(1.2, 1.5)),   # 改变亮度,不影响关键点
  27.     iaa.Affine(rotate=20, scale=0.8)   # 旋转10度然后缩放,会影响关键点
  28. ])

  29. # 固定变换序列,之后就可以先变换图像然后变换关键点,这样可以保证两次的变换完全相同。
  30. # 如果调用次函数,需要在每次batch的时候都调用一次,否则不同的batch执行相同的变换。
  31. # deterministic 确定性的
  32. seq_det = seq.to_deterministic()

  33. # 转换成list或者batch来变换。由于只有一张图片, 因此用[0]来取出该图和关键点。
  34. image_aug = seq_det.augment_images([img])[0]
  35. keypoints_aug = seq_det.augment_keypoints([keypoints])[0]

  36. # print coordinates before/after augmentation (打印图像增强前后的关键点坐标)
  37. # use after.x_int and after.y_int to get rounded integer coordinates
  38. for i in range(len(keypoints.keypoints)):
  39.     before = keypoints.keypoints[i]
  40.     after = keypoints_aug.keypoints[i]
  41.     print("Keypoint %d: (%.8f, %.8f) -> (%.8f, %.8f)" % (
  42.         i, before.x, before.y, after.x, after.y)
  43.     )

  44. # 将关键点画在图片上。 size是关键点的大小
  45. # image with keypoints before/after augmentation (shown below)
  46. image_before = keypoints.draw_on_image(img, size=15)
  47. image_after = keypoints_aug.draw_on_image(image_aug, size=7)

  48. ia.imshow(np.hstack([image_before, image_after]))


复制代码


keypoint变换.jpg (64.8 KB, 下载次数: 165)

keypoint变换.jpg
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

0

主题

117

帖子

258

积分

中级会员

Rank: 3Rank: 3

积分
258
QQ
沙发
发表于 2020-2-3 15:21:20 | 只看该作者
谢谢老师答疑解惑
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-4-20 03:06 , Processed in 0.180403 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表