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