前言
图像是 Web 应用中除文字外最普遍的媒体格式。
流行的 Web 静态图片有 JPEG、PNG、ICO、BMP 等。动态图片主要是 GIF 格式。
为了节省图片传输流量,大型互联网公司还会定制特殊格式的图片,WEBP 格式就是一个代表。
Python 除了数据分析,做图片处理也是非常好用的。
用 Python 做图片处理,最著名的库就是 PIL(Python Imaging Library)了,支持最新的 Python3,而且有许多新的特性,Pillow
也成为了 Python 图片处理必不可少的工具之一了。
不过我们今天要使用的作图库是OpenCV Python ,下一期我们再来研究PIL
这篇文章主要介绍了Python+OpenCV实现图像二值化,帮助大家更好的利用python处理图片,感兴趣的朋友可以了解下。
图片处理库准备
OpenCV Python 来处理图片,安装过程如下:
pip install opencv-python
图片加载
我们先来打开一张图片测试,如下可以成功加载图片表示已经
成功安装OpenCV-Python
图片缩放
在保持图片细节不变的前提下,把图片放大或者缩小。
其中img 是图片对象,img.shape 表示图片的形状大小,分别是高、宽、通道数。
Python学习交流Q群:906715085### # 获取图片尺寸 img = cv2.imread(\"./pic1.jpg\") h, w, ch = img.shape print(h, w, ch) \'\'\' 1240 960 3 \'\'\'
我们的思路如下:
程序读入图片文件,用 cv2.resize 方法,把图片等比例缩放为一半的大小。
Python学习交流Q群:906715085### # 获取图片尺寸 img = cv2.imread(\"./pic1.jpg\") h, w, ch = img.shape print(\'原图尺寸:\', h, w, ch) new_h = int(h / 2) new_w = int(w / 2) res = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR) cv2.imwrite(\'./half_pic1.jpg\', res) # 获取图片尺寸 img = cv2.imread(\"./half_pic1.jpg\") h, w, ch = img.shape print(\'缩半原图尺寸:\', h, w, ch) \'\'\' 原图尺寸:1240 960 3 缩半原图尺寸:620 480 3 \'\'\'
实际效果如下:
图片裁剪
把图片的局部形状截取出来,这里我们截取小姐姐图像,按照自己需求去掉前后左右多余边框。
Python学习交流Q群:906715085### img = cv2.imread(\"./pic1.jpg\") h, w, ch = img.shape print(h, w, ch) # (x0,y0) (x1,y1) 矩阵 x0, y0 = 200, 80 x1, y1 = 880, 960 # img 是一个按行扫描的矩阵 res = img[y0:y1, x0:x1] print(\'截取后 H,W=\', res.shape[:2]) cv2.imwrite(\'./pic.jpg\', res) \'\'\' 1240 960 3 截取后 H,W= (880, 680) \'\'\'
实际效果如下:
图像组合
把两个或者多个图像进行堆叠、拼接。
准备一个原图 pic1.jpg,再准备一个水印图 img.png,目标是把水印贴在人像图的最右下方。
# 读取原始图片 image = cv2.imread(\'./pic1.jpg\') (h, w) = image.shape[:2] print(\"SOURCE\", image.shape) # 读取水印 imgsy = cv2.imread(\'./img.png\') (h_sy, w_sy) = imgsy.shape[:2] print(\"SHUIYIN\", imgsy.shape) # 定义原图片选区 roi = image[h - h_sy:h, w - w_sy:w] # 原图片选区和水印区融合,让水印透明 for y in range(h_sy): for x in range(w_sy): p = imgsy[y, x] if (p[0], p[1], p[2]) == (0, 0, 0): imgsy[y, x] = roi[y, x] cv2.imwrite(\'./shuiyin+roi.png\', imgsy) # 选区范围设定为融合后的水印 image[h - h_sy: h, w - w_sy: w] = imgsy cv2.imwrite(\'./pic_sy.jpg\', image)
来源:https://www.cnblogs.com/123456feng/p/16178980.html
本站部分图文来源于网络,如有侵权请联系删除。