跋扈洋

  • 150 主题
  • 298 帖子
  • 1552 积分
  • 身份:版主
  • 论坛新秀
  • E币:309

《原创》自制简单的图像变换工具(平移、局部放大、翻转)

2021-1-11 11:26:28 显示全部楼层
引言


  我们在平时工作、生活中总会用到一些图像不合心意。或是想将图像平移或是想将图像的局部变大或变小。或是想进行翻转等等。这些图像处理我们往往利用一些修图软件进行操作。但目前很多软件都变成收费使用,而且在使用过程中出现越来越多的广告。那么我们是否可以自己制作这样的图像处理工具呢?答案是可以的,而且并不复杂。
  很多的物联网相关工程师,是做硬件的,以前都是制作单片机、嵌入式的开发。我们对于一些软件的编程并不熟悉,但是我们又往往需要用到一些图像处理。这时候我们其实可以用python自己制作一个这样的应用。我们不必制作成软件或是APP。只需要对我们的相关图像进行处理功能就可以了。
  下面我就分享一个图像处理的知识,并且将程序分享出来。有兴趣的可以动手试试,非常简单,但很实用。


正文

翻转


  1. import cv2
  2. from matplotlib import pyplot as plt
  3. image = cv2.imread("1.jpg")
  4. #转换颜色通道
  5. b, g, r = cv2.split(image)
  6. image = cv2.merge([r, g, b])
  7. #图像水平翻转
  8. flipped1 = cv2.flip(image,1)
  9. #图像垂直翻转
  10. flipped2 = cv2.flip(image,0)
  11. #图像水平垂直翻转
  12. flipped3 = cv2.flip(image,-1)
  13. #显示图像
  14. plt.subplot(141),plt.imshow(image),plt.title('Input')
  15. plt.xticks([]),plt.yticks([])
  16. plt.subplot(142),plt.imshow(flipped1),plt.title('Output1')
  17. plt.xticks([]),plt.yticks([])
  18. plt.subplot(143),plt.imshow(flipped2),plt.title('Output2')
  19. plt.xticks([]),plt.yticks([])
  20. plt.subplot(144),plt.imshow(flipped3),plt.title('Output3')
  21. plt.xticks([]),plt.yticks([])
  22. plt.show()

平移


  1. import cv2
  2. import numpy as np

  3. img = cv2.imread('1.jpg')
  4. M = np.float32([[1, 0, 30], [0, 1, 50]])
  5. res = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
  6. while 1:
  7.         # 显示图像
  8.         cv2.imshow('img', img)
  9.         cv2.imshow('res', res)
  10.         k = cv2.waitKey(5) & 0xFF
  11.         if k == 27:
  12.                 break
  13. # 关闭窗口
  14. cv2.destroyAllWindows()

旋转和缩放


  1. import cv2
  2. image = cv2.imread("1.jpg")
  3. cv2.imshow("Original",image)
  4. cv2.waitKey(0)
  5. (h,w) = image.shape[:2]
  6. center = (w / 2,h / 2)
  7. #旋转45度,缩放0.75
  8. M = cv2.getRotationMatrix2D(center,45,0.75)
  9. rotated = cv2.warpAffine(image,M,(w,h))
  10. cv2.imshow("Rotated by 45 Degrees",rotated)
  11. cv2.waitKey(0)
  12. #旋转-45度。缩放1.25
  13. M = cv2.getRotationMatrix2D(center,-45,1.25)
  14. rotated = cv2.warpAffine(image,M,(w,h))
  15. cv2.imshow("Rotated by -90 Degrees",rotated)
  16. cv2.waitKey(0)

后续

有什么更好的想法,可以评论区进行交流,毕竟技术的进步离不开行业的氛围。







您需要登录后才可以评论 登录 | 立即注册

最新评论

楼层直达:

火引冰薪

  • 205 主题
  • 568 帖子
  • 2542 积分
  • 身份:版主
  • 论坛新秀 灌水之王
  • E币:2014
火引冰薪 2021-1-12 09:04:04 显示全部楼层
图像处理的知识,这个是用opencv的知识吗

点评

对的  详情 回复 发表于 2021-1-12 13:13

我的果果超可爱

  • 155 主题
  • 427 帖子
  • 1875 积分
  • 身份:版主
  • E币:519
很明显,图片差值算法增加分辨率啊,这个大有用处啊,
很多老照片分辨率太低,差值算法清晰化啊。
加油版主,期待你的新工具。

点评

哈哈,陆续会分享更多  详情 回复 发表于 2021-1-12 13:12

跋扈洋

  • 150 主题
  • 298 帖子
  • 1552 积分
  • 身份:版主
  • 论坛新秀
  • E币:309
跋扈洋 2021-1-12 13:12:09 显示全部楼层
我的果果超可爱 发表于 2021-1-12 09:37
很明显,图片差值算法增加分辨率啊,这个大有用处啊,
很多老照片分辨率太低,差值算法清晰化啊。
加油版主 ...

哈哈,陆续会分享更多
广告

跋扈洋

  • 150 主题
  • 298 帖子
  • 1552 积分
  • 身份:版主
  • 论坛新秀
  • E币:309

乖乖兔爸爸

  • 0 主题
  • 390 帖子
  • 1533 积分
  • 身份:LV4 高级技术员
  • E币:1073
乖乖兔爸爸 2021-1-14 13:32:46 显示全部楼层
有原理代码么?

点评

我发的就是代码啊  详情 回复 发表于 2021-1-14 14:30

跋扈洋

  • 150 主题
  • 298 帖子
  • 1552 积分
  • 身份:版主
  • 论坛新秀
  • E币:309

Prince

  • 0 主题
  • 9 帖子
  • 334 积分
  • 身份:LV2 初级技术员
  • E币:367
广告

流浪小子

  • 117 主题
  • 308 帖子
  • 1326 积分
  • 身份:版主
  • E币:494
流浪小子 2021-1-28 16:42:53 显示全部楼层
厉害,点赞

点评

谢谢  详情 回复 发表于 2021-1-29 17:23

跋扈洋

  • 150 主题
  • 298 帖子
  • 1552 积分
  • 身份:版主
  • 论坛新秀
  • E币:309
快速回复
9
16
广告
关闭 热点推荐上一条 /8 下一条
快速回复 返回列表