訂閱
糾錯(cuò)
加入自媒體

操作匯總:Python+OpenCV的基礎(chǔ)圖像處理

本文我們將討論使用Python中的OpenCV庫進(jìn)行圖像處理的一些基本操作。

圖像處理是對(duì)圖像進(jìn)行的技術(shù)操作與分析,比如為了得到增強(qiáng)的圖像或提取一些有用的信息而進(jìn)行的一系列操作。隨著我們的發(fā)展,許多應(yīng)用程序使用圖像/幀/視頻作為輸入,對(duì)它們進(jìn)行預(yù)處理,并將其輸入到設(shè)備或軟件或腳本中。

應(yīng)用

圖像處理也可以是娛樂性的,可以用于許多應(yīng)用。它可以用來調(diào)整圖像的大小,以適應(yīng)我們的網(wǎng)頁所需大小,并可以使他們銳化它可以將黑白圖像轉(zhuǎn)換成彩色照片,或者可以使用著色技術(shù)使彩色照片看起來像舊的黑白照片一樣它可以用來增強(qiáng)醫(yī)學(xué)影像來檢查病人的癌癥或其他疾病。基本圖像處理技術(shù)在本文中,我們將看到從目錄中讀取圖像、修改圖像并將其存儲(chǔ)在另一個(gè)目錄中的函數(shù)實(shí)現(xiàn)。下面是我們要討論的主要內(nèi)容。

使用Python和OpenCV讀取圖像使用OpenCV調(diào)整圖像大小模糊/平滑圖像銳化圖像邊緣檢測(cè)算法(Canny)基本要求和安裝:裝有Windows的電腦/個(gè)人電腦/筆記本電腦Python軟件:可以按照這里相關(guān)包進(jìn)行下載和安裝。

下載并安裝VS Code。從Visual Studio Marketplace安裝Python擴(kuò)展包。Python擴(kuò)展名為Python,由Microsoft發(fā)布。通過在CMD(命令提示符)中發(fā)出以下命令來安裝opencv python(這是一個(gè)用于python的非正式預(yù)構(gòu)建opencv包):pip install PACKAGE_NAME
PACKAGE_NAME可以是opencv-python(只包含主模塊)opencv-contrib-python(包含main和contrib模塊)opencv-python-headless(與opencv-python相同,但沒有GUI功能)opencv-contrib-python-headless(與opencv-contrib-python相同,但沒有GUI功能)設(shè)置完成之后,打開一個(gè)目錄,創(chuàng)建一個(gè)“Image_Processing”文件夾。下載少量圖像(3-4個(gè)圖像)并保存在該文件夾中。創(chuàng)建一個(gè)Python腳本文件“Test_img_processing.py“(.py是python腳本的擴(kuò)展)

實(shí)現(xiàn)與執(zhí)行:現(xiàn)在我們可以使用python腳本了,需要在導(dǎo)入所需庫的情況下啟動(dòng)腳本。

下面是進(jìn)行基本圖像處理的函數(shù)。

1.我們使用函數(shù)“imread()”來讀取圖像,它將圖像文件名作為字符串和標(biāo)志imread(/complete/path/to/image,flag)第一個(gè)參數(shù)是指向圖像的完整路徑以及擴(kuò)展名。第二個(gè)參數(shù)是可選標(biāo)志,可以是以下任意一個(gè):cv2.IMREAD_COLOR:加載彩色圖像。圖像的任何透明度都將被忽略,它是默認(rèn)標(biāo)志。cv2.IMREAD_GRAYSCALE:以灰度模式加載圖像cv2.IMREAD_UNCHANGED:加載圖像,包括alpha通道返回numpy數(shù)組,包含像素值。對(duì)于彩色圖像,每個(gè)像素都表示為一個(gè)包含紅色、綠色和藍(lán)色通道的數(shù)組。注意,默認(rèn)標(biāo)志是cv2.IMREAD_COLOR,因此,即使讀取具有透明度的png圖像,透明通道也會(huì)被忽略。

2.使用“imshow()”來顯示讀取的圖像cv2.imshow(window_name, image)第一個(gè)參數(shù)是顯示圖像時(shí)顯示的窗口名稱。第二個(gè)參數(shù)是要在窗口中顯示的圖像。

3.為了將讀取的圖像保存到另一個(gè)目錄中,我們使用“imwrite()”函數(shù),目標(biāo)路徑和圖像文件作為參數(shù)。cv2.imwrite(‘/path/to/destination/image.png’,image)第一個(gè)參數(shù)是指向文件系統(tǒng)上的目標(biāo)路徑,在該位置上保存圖像。第二個(gè)參數(shù)是包含圖像的ndarray如果圖像成功寫入文件系統(tǒng),則返回True,否則返回False。

4.為了得到圖像的尺寸,我們有一個(gè)稱為shape的屬性img = cv2.imread(‘/home/img/python.png’, cv2.IMREAD_UNCHANGED)
# 獲取圖像的尺寸
dimensions = img.shape
# 高度、寬度、通道
height = img.shape[0]
width = img.shape[1]
channels = img.shape[2]
img.shape返回(高度、寬度、通道數(shù))高度表示圖像中的像素行數(shù)或圖像數(shù)組的每列中的像素?cái)?shù)。寬度表示圖像中的像素列數(shù)或圖像數(shù)組中每行的像素?cái)?shù)。通道數(shù)表示用于表示每個(gè)像素的組件數(shù)。

5.為了模糊圖像,我們使用“cv2.Blur()”,輸入?yún)?shù)為圖像和濾波器。這里使用平均濾波器,當(dāng)然也還有其他選擇:高斯模糊中值模糊雙邊濾波示例腳本:# 導(dǎo)入opencv CV2模塊
import cv2
# bat.jpg 是蝙蝠俠的圖片.
img = cv2.imread(‘bat.jpg’)
# 確保已將其保存在同一文件夾中
# 平均
# 你可以隨意改變核大小
Averaging_blur= cv2.blur(img,(10,10))
cv2.imshow(‘Averaging’,Averaging_blur)
cv2.waitKey(0)# 等待窗口關(guān)閉
# 高斯模糊
# 你可以隨意改變核大小
Gaussian_Blur= cv2.GaussianBlur(img, (5,5),0)
cv2.imshow(‘Gaussian Blurring’, Gaussian_Blur)
cv2.waitKey(0)#waits for the window to close
# 中值模糊
Median_Blur= cv2.medianBlur(img,5)
cv2.imshow(‘Median Blurring’, Median_Blur)
cv2.waitKey(0)# 等待窗口關(guān)閉
# 雙邊濾波
Bilateral_Filter= cv2.bilateralFilter(img,9,75,75)
cv2.imshow(‘Bilateral Filtering’, Bilateral_Filter)
cv2.waitKey(0) # 等待窗口關(guān)閉
cv2.destroyAllWindows()# 關(guān)閉此會(huì)話中所有打開的窗口

6.為了檢測(cè)圖像的邊緣,我們使用了流行的canny邊緣檢測(cè)算法。OpenCV有一個(gè)內(nèi)置函數(shù)cv2.Canny(),它將輸入圖像作為第一個(gè)參數(shù),其光圈大小(最小值和最大值)作為最后兩個(gè)參數(shù)。edges = cv2.Canny(frame,100,200)
# 在框架中顯示邊
cv2.imshow('Edges',edges)

使用opencv和python有更多的操作和開源算法來執(zhí)行圖像的特定功能,這些操作和算法可以非常容易和靈活地在實(shí)時(shí)視頻/幀中實(shí)現(xiàn)。

聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

    掃碼關(guān)注公眾號(hào)
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯(cuò)
    x
    *文字標(biāo)題:
    *糾錯(cuò)內(nèi)容:
    聯(lián)系郵箱:
    *驗(yàn) 證 碼:

    粵公網(wǎng)安備 44030502002758號(hào)