基本的圖像處理操作
Python中的圖像處理基礎(chǔ)
圖像處理是一種對圖像執(zhí)行操作以從中提取信息或增強(qiáng)圖像的方法。圖像處理是當(dāng)今計(jì)算機(jī)視覺中最熱門的話題之一,因?yàn)樗徽J(rèn)為是計(jì)算機(jī)視覺、OCR 和其他相機(jī)相關(guān)領(lǐng)域的基礎(chǔ)。
讓我們開始實(shí)際處理圖像。
提示:
只是在這里向你展示一個(gè)代碼片段,但在本文的末尾,提供了的git 存儲庫,你可以在其中找到此文中的所有代碼。你可以直接復(fù)制粘貼!
讓我們開始吧!
如何讀取圖像?
你可以通過 3 種類型讀取圖像。
1. 使用 open-cv
OpenCV(Open Source Computer Vision Library)是一個(gè)開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫。OpenCV 旨在為計(jì)算機(jī)視覺應(yīng)用程序提供通用基礎(chǔ)架構(gòu),并加速機(jī)器感知在商業(yè)產(chǎn)品中的使用。
這是讀取圖像的最常用方法。
import cv2
#read image by opencv
img_1 = cv2.imread(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")
cv2.imshow("img",img_1)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2 讀取圖像
運(yùn)行代碼后,將打開一個(gè)單獨(dú)的窗口,你將看到你的圖像。
· Waitley 代表你希望在屏幕上停留多長時(shí)間的時(shí)間。
· destroyAllWindows() 是用于在時(shí)間結(jié)束后刪除圖像的命令。
· 輸出圖像是數(shù)組的形式。
2. Pillow 庫
PIL(Python Imaging Library)為 Python 添加了許多圖像處理功能。Pillow 是 PIL 的一個(gè)分支,增加了一些用戶友好的特性。
# read image by PIL
from PIL import Image
# creating a object
img = Image.open(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")
img.show()
type(img)
輸出:
· 輸出格式為JPG格式[PIL.JpegImagePlugin.JpegImageFile
3. matplotlib庫
matplotlib 庫中的圖像模塊用于在 Python 中處理圖像。
#read image by matplotlib
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from matplotlib.pyplot import figure
figure(figsize=(4, 3), dpi=80)
img = mpimg.imread(r'C:UsersChinmayBDownloadspexels-photo-8115603.jpeg')
imgplot = plt.imshow(img)
plt.show()
輸出:
· 輸出圖像是數(shù)組的形式。
使圖像模糊
1. 高斯模糊
使圖像模糊的最簡單方法是使用高斯濾波器。高斯模糊只是一種借助高斯函數(shù)模糊圖像的方法。模糊圖像使邊緣更牢固。
#gaussian blurr
import cv2
img_1 = cv2.imread(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")
blur = cv2.blur(img_1,(5,5))
cv2.imshow("img",blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
2. 內(nèi)核模糊
你可以自定義模糊率和其他內(nèi)容。
#Kernel blurr
import numpy as np
kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img_1,-1,kernel)
cv2.imshow("img",dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
3. 中值模糊
##median blurr
img_1 = cv2.imread(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")
median = cv2.medianBlur(img_1,17)
cv2.imshow("img",median)
cv2.waitKey(0)
cv2.destroyAllWindows()
· 這些是你可以使圖像模糊并更改模糊強(qiáng)度的方法。
將圖像轉(zhuǎn)換為黑白
· 我們以 RGB 三種顏色讀取圖像。很多時(shí)候我們想使用它的基礎(chǔ)版本,比如黑白。
######converting image into black and white
import cv2
img_1 = cv2.imread(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")
grayImage = cv2.cvtColor(img_1, cv2.COLOR_BGR2GRAY)
(thresh, blackAndWhiteImage) = cv2.threshold(grayImage, 127, 255, cv2.THRESH_BINARY)
# cv2.imshow('Black white image', blackAndWhiteImage)
cv2.imshow('Gray image', grayImage)
cv2.waitKey(0)
cv2.destroyAllWindows()
· 你可以通過上面的代碼改變灰度的強(qiáng)度。
裁剪圖像
#Cropping Image
img_1 = cv2.imread(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")
x,y,c = img_1.shape
new_img = img_1[50:580, 100:300]
cv2.imshow('Gray image', new_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
· 裁剪非常簡單,因?yàn)槟阒恍枰峁⿵哪睦镩_始和從哪里結(jié)束的坐標(biāo)。
· 你可以使用 cv2.imwrite 存儲裁剪的圖像以供進(jìn)一步處理。
編輯應(yīng)用程序等對比效果
· 對比度決定圖像中陰影的數(shù)量。
· 在圖像特征的灰度基礎(chǔ)上進(jìn)行區(qū)分,使用對比度。
######contrast
from PIL import Image, ImageEnhance
# Opening Image
im = Image.open(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")
# Creating object of Contrast class
im3 = ImageEnhance.Contrast(im)
# showing resultant image
im3.enhance(4.9).show()
銳化圖像
· 很多時(shí)候,由于相機(jī)鏡頭沒有對焦,圖像會變得模糊。銳化效果銳化邊緣以獲得更好的外觀。
#sharpning an image
import numpy as np
import cv2
img1 = cv2.imread(r'C:UsersChinmayBDownloadspexels-photo-8115603.jpeg',1)
# Creating our sharpening filter
filter = np.a(chǎn)rray([[-1, -1, -1], [-1, 9, -1], [-1, -1, -1]])
# Applying cv2.filter2D function on our Cybertruck image
sharpen_img_1=cv2.filter2D(img1,-1,filter)
sharpen_img_1 = cv2. resize(sharpen_img_1, (960, 840))
cv2.imshow("sharp",sharpen_img_1)
cv2.waitKey(0)
cv2.destroyAllWindows()
壓紋濾鏡
import cv2
img1 = cv2.imread(r'C:UsersChinmayBDownloadspexels-photo-8115603.jpeg',1)
(b,g,r)=cv2.split(img1)
r_new = r*0.393 + g*0.769 + b*0.189
g_new = r*0.349 + g*0.686 + b*0.168
b_new = r*0.272 + g*0.534 + b*0.131
img_new=cv2.merge([b_new, g_new, r_new])
cv2.imshow("img",img_new)
cv2.waitKey(0)
cv2.destroyAllWindows()
小提示:內(nèi)核中這些不同值的組合是生成你當(dāng)前在 Instagram、Snapchat 和其他社交媒體上使用的許多濾鏡的基礎(chǔ)。
以任意角度旋轉(zhuǎn)圖像
· 通過這種簡單的 cv2 方法,可以實(shí)現(xiàn)所有圖像數(shù)據(jù)增強(qiáng),如旋轉(zhuǎn)、翻轉(zhuǎn)、垂直和水平。
# Creating our emboss filter
img_1 = cv2.imread(r'C:UsersChinmayBDownloadspexels-photo-8115603.jpeg',1)
filter = np.a(chǎn)rray([[0,1,0],[0,0,0],[0,-1,0]])
# Applying cv2.filter2D function on our Cybertruck image
emboss_img_1=cv2.filter2D(img_1,-1,filter)
emboss_img_1=emboss_img_1+128
emboss_img_1 = cv2. resize(emboss_img_1, (660, 640))
cv2.imshow("dsnfj",emboss_img_1)
cv2.waitKey(0)
cv2.destroyAllWindows()
縮。{(diào)整圖像大小
· 對于更大尺寸的圖像,數(shù)據(jù)要求更多。所以縮小有時(shí)可以提高它的可見性和功能。
# import the Python Image
# processing Library
from PIL import Image
# Giving The Original image Directory
# Specified
Original_Image = Image.open(r"C:UsersChinmayBDownloadspexels-photo-8115603.jpeg")
# Rotate Image By 180 Degree
rotated_image1 = Original_Image.rotate(180)
# This is Alternative Syntax To Rotate
# The Image
rotated_image2 = Original_Image.transpose(Image.ROTATE_90)
# This Will Rotate Image By 60 Degree
rotated_image3 = Original_Image.rotate(60)
rotated_image1.show()
rotated_image2.show()
rotated_image3.show()
在圖像上寫文字
水印或任何其他文本是圖像中的重要因素之一。下面的程序?qū)⒆屇懔私馊绾卧趫D像上編寫文本。
###shrink image
img_1 = cv2.imread(r'C:UsersChinmayBDownloadspexels-photo-8115603.jpeg',1)
img_shrinked = cv2.resize(img_1,(150, 150), interpolation = cv2.INTER_AREA)
cv2.imshow('img',img_shrinked)
cv2.waitKey(0)
cv2.destroyAllWindows()
這些是我覺得有趣的圖像處理操作。這些所有操作都基于許多圖像編輯應(yīng)用程序。你可以通過結(jié)合所有技術(shù)來創(chuàng)建相同的應(yīng)用程序。
原文標(biāo)題 : 基本的圖像處理操作

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個(gè)字
最新活動更多
-
3月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會
-
4月30日立即下載>> 【村田汽車】汽車E/E架構(gòu)革新中,新智能座艙挑戰(zhàn)的解決方案
-
5月15-17日立即預(yù)約>> 【線下巡回】2025年STM32峰會
-
即日-5.15立即報(bào)名>>> 【在線會議】安森美Hyperlux™ ID系列引領(lǐng)iToF技術(shù)革新
-
5月15日立即下載>> 【白皮書】精確和高效地表征3000V/20A功率器件應(yīng)用指南
-
5月16日立即參評 >> 【評選啟動】維科杯·OFweek 2025(第十屆)人工智能行業(yè)年度評選
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 4 “AI寒武紀(jì)”爆發(fā)至今,五類新物種登上歷史舞臺
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計(jì)算迎來商業(yè)化突破,但落地仍需時(shí)間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機(jī)器人東風(fēng)翻身?