圖像是 Web 應(yīng)用中除文字外最普遍的媒體格式。流行的 Web 靜態(tài)圖片有 JPEG、PNG、ICO、BMP 等。動態(tài)圖片主要是 GIF 格式。
為了節(jié)省圖片傳輸流量,大型互聯(lián)網(wǎng)公司還會定制特殊格式的圖片,WEBP 格式就是一個代表。
Python 除了數(shù)據(jù)分析,做圖片處理也是非常好用的。
用 Python 做圖片處理,最著名的庫就是 PIL(Python Imaging Library)了,支持最新的 Python3,而且有許多新的特性,Pillow 也成為了 Python 圖片處理必不可少的工具之一了。
不過我們今天要使用的作圖庫是OpenCV Python ,下一期我們再來研究PIL
這篇文章主要介紹了Python+OpenCV實(shí)現(xiàn)圖像二值化,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下。
圖片處理庫準(zhǔn)備
OpenCV Python 來處理圖片,安裝過程如下:
圖片加載
我們先來打開一張圖片測試,如下可以成功加載圖片表示已經(jīng)
成功安裝OpenCV-Python
圖片縮放
在保持圖片細(xì)節(jié)不變的前提下,把圖片放大或者縮小。
其中img 是圖片對象,img.shape 表示圖片的形狀大小,分別是高、寬、通道數(shù)。
# 獲取圖片尺寸
img = cv2.imread("./pic1.jpg")
h, w, ch = img.shape
print(h, w, ch)
'''
1240 960 3
'''
我們的思路如下:
程序讀入圖片文件,用 cv2.resize 方法,把圖片等比例縮放為一半的大小。
# 獲取圖片尺寸
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
'''
實(shí)際效果如下:
圖片裁剪
把圖片的局部形狀截取出來,這里我們截取小姐姐圖像,按照自己需求去掉前后左右多余邊框。
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)
'''
實(shí)際效果如下:
圖像組合
把兩個或者多個圖像進(jìn)行堆疊、拼接。
準(zhǔn)備一個原圖 pic1.jpg,再準(zhǔn)備一個水印圖 img.png,目標(biāo)是把水印貼在人像圖的最右下方。
# 讀取原始圖片
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)
# 定義原圖片選區(qū)
roi = image[h - h_sy:h, w - w_sy:w]
# 原圖片選區(qū)和水印區(qū)融合,讓水印透明
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)
# 選區(qū)范圍設(shè)定為融合后的水印
image[h - h_sy: h, w - w_sy: w] = imgsy
cv2.imwrite('./pic_sy.jpg', image)
-
Web
+關(guān)注
關(guān)注
2文章
1280瀏覽量
70710 -
OpenCV
+關(guān)注
關(guān)注
32文章
642瀏覽量
42353 -
python
+關(guān)注
關(guān)注
56文章
4823瀏覽量
86043
發(fā)布評論請先 登錄
基于機(jī)器學(xué)習(xí)庫opencv和平臺Jupyter Notebook的車牌識別案例
【Toybrick RK3399Pro AI開發(fā)板試用體驗(yàn)】ACT Ⅵ:Linux下靜態(tài)人臉識別 python+opencv
Vivado HLS實(shí)現(xiàn)OpenCV圖像處理的設(shè)計流程與分析
OpenCV圖像處理編程研究
最全OpenCV教程及圖像處理、目標(biāo)跟蹤、識別案例

python圖像處理opencv步驟是怎么樣的
如何使用Python OpenCV進(jìn)行面部標(biāo)志檢測

如何使用Python和OpenCV進(jìn)行圖像拼接
使用opencv和python進(jìn)行智能火災(zāi)檢測

如何使用OpenCV和Python從圖像中提取感興趣區(qū)域
opencv-python和opencv一樣嗎
一個月速成python+OpenCV圖像處理

評論