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)

逐梦很累,坚持加油。

原文地址:https://www.cnblogs.com/mafu/p/15529216.html