我们在平时工作、生活中总会用到一些图像不合心意。或是想将图像平移或是想将图像的局部变大或变小。或是想进行翻转等等。这些图像处理我们往往利用一些修图软件进行操作。但目前很多软件都变成收费使用,而且在使用过程中出现越来越多的广告。那么我们是否可以自己制作这样的图像处理工具呢?答案是可以的,而且并不复杂。
很多的物联网相关工程师,是做硬件的,以前都是制作单片机、嵌入式的开发。我们对于一些软件的编程并不熟悉,但是我们又往往需要用到一些图像处理。这时候我们其实可以用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)
后续
有什么更好的想法,可以评论区进行交流,毕竟技术的进步离不开行业的氛围。