Python的OpenCV库
安装:
pip install opencv-python
用opencv处理一些图片。
# 图片加载:
1 import cv2 2 # 图片加载 3 def read_image(): 4 img = cv2.imread('1.jpg') # 加载图片 5 cv2.namedWindow('input', cv2.WINDOW_AUTOSIZE) # 默认大小 6 cv2.imshow('input', img) # 显示图片 7 cv2.waitKey(0) # 等待按键,单位为毫秒,0表示无限等待按键 8 cv2.destroyAllWindows() # 销毁 9 10 read_image()
# 保持图片细节进行缩放
1 import cv2 2 3 # 图片缩放,在保持图片细节不变的前提下,把图片进行放大或者缩小 4 img = cv2.imread('1.jpg') # 加载图片 5 height, width, channel = img.shape # 获取图像的参数,分别表示长高和通道数 6 print('原始尺寸为:', height, width, channel) # 333 550 3 7 8 # 用resize方法将图片进行等比缩放 9 new_h = int(height / 2) # 定义高度 10 new_w = int(width / 2) # 定义宽度 11 resize = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR) # 缩放,进去的时候是宽高 12 cv2.imwrite('half_pic.jpg', resize) # 保存 13 14 # 读出来看看是否一致 15 img1 = cv2.imread('half_pic.jpg') 16 h, w, c = img1.shape # 读出来的时候是,高,宽 17 print("缩半后的图片尺寸为:", w, h)
# 对图片进行裁切
1 import cv2 2 3 # 对图片进行裁切 4 img = cv2.imread('1.jpg') # 读取图像 5 height, width, channel = img.shape #获取参数 6 print(height, width, channel) 7 8 # 要裁切的矩阵 9 x0, y0 = 100, 10 10 x1, y1 = 200, 100 11 12 # img是一个按行扫描的矩阵 13 res = img[y0:y1, x0:x1] 14 print('截取后 h, w = ', img[:2]) 15 cv2.imwrite('pic.jpg', res)
# 图像拼接,组合,水印
1 import cv2 2 3 4 # 首先读取原始图片 5 image = cv2.imread('1.jpg') 6 (h, w) = image.shape[:2] # 切片 7 print('原始图片尺寸:', image.shape) # 打印尺寸 8 9 # 读取要嵌入的图片 10 syimage = cv2.imread('sy.png') # 透明图层的图片 11 (sy_h, sy_w) = syimage.shape[:2] 12 print('水印图片尺寸:', syimage.shape) 13 14 # 定义原图片选区 15 roi = image[h-sy_h:w-sy_w] 16 17 # 原图片区和水印区重合,让水印透明 18 for y in range(sy_h): 19 for x in range(sy_w): 20 p = syimage[y, x] 21 if (p[0], p[1], p[2]) == (0, 0, 0): 22 syimage[y, x] = roi[y, x] 23 cv2.imwrite('shuiyin+roi.png', syimage) 24 25 # 选区范围设定为融合后的水印 26 image[h - sy_h: h, w - sy_w: w] = syimage 27 # 最后写入 28 cv2.imwrite('last.jpg', image)
逐梦很累,坚持加油。