引言


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


正文

翻转


import cv2
  • from matplotlib import pyplot as plt
  • image = cv2.imread("1.jpg")
  • #转换颜色通道
  • b, g, r = cv2.split(image)
  • image = cv2.merge([r, g, b])
  • #图像水平翻转
  • flipped1 = cv2.flip(image,1)
  • #图像垂直翻转
  • flipped2 = cv2.flip(image,0)
  • #图像水平垂直翻转
  • flipped3 = cv2.flip(image,-1)
  • #显示图像
  • plt.subplot(141),plt.imshow(image),plt.title('Input')
  • plt.xticks([]),plt.yticks([])
  • plt.subplot(142),plt.imshow(flipped1),plt.title('Output1')
  • plt.xticks([]),plt.yticks([])
  • plt.subplot(143),plt.imshow(flipped2),plt.title('Output2')
  • plt.xticks([]),plt.yticks([])
  • plt.subplot(144),plt.imshow(flipped3),plt.title('Output3')
  • plt.xticks([]),plt.yticks([])
  • plt.show()
  • 复制代码

    平移


    import cv2
  • import numpy as np
  • img = cv2.imread('1.jpg')
  • M = np.float32([[1, 0, 30], [0, 1, 50]])
  • res = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
  • while 1:
  •         # 显示图像
  •         cv2.imshow('img', img)
  •         cv2.imshow('res', res)
  •         k = cv2.waitKey(5) & 0xFF
  •         if k == 27:
  •                 break
  • # 关闭窗口
  • cv2.destroyAllWindows()
  • 复制代码

    旋转和缩放


    import cv2
  • image = cv2.imread("1.jpg")
  • cv2.imshow("Original",image)
  • cv2.waitKey(0)
  • (h,w) = image.shape[:2]
  • center = (w / 2,h / 2)
  • #旋转45度,缩放0.75
  • M = cv2.getRotationMatrix2D(center,45,0.75)
  • rotated = cv2.warpAffine(image,M,(w,h))
  • cv2.imshow("Rotated by 45 Degrees",rotated)
  • cv2.waitKey(0)
  • #旋转-45度。缩放1.25
  • M = cv2.getRotationMatrix2D(center,-45,1.25)
  • rotated = cv2.warpAffine(image,M,(w,h))
  • cv2.imshow("Rotated by -90 Degrees",rotated)
  • cv2.waitKey(0)
  • 复制代码

    后续

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