opencv-python圖像處理安裝與基本操作方法
一、安裝opencv
關(guān)于opencv的安裝,如果是windows系統(tǒng)下使用pycharm,那么直接在在終端使用pip命令或者點(diǎn)擊設(shè)置-python解釋器輸入opencv-python即可

如果使用的是conda,那也可以使用pip命令或者conda install 安裝
在linux下的話更加簡(jiǎn)單。而且也會(huì)少很多無緣無故的bug,推薦使用linux系統(tǒng)。linux下使用終端輸入pip或者pip3 install opencv-python即可,前提是已經(jīng)安裝了python并且設(shè)置好了路徑變量。
二、 opencv使用
想要使用opencv,必須在代碼開頭導(dǎo)入opencv的包,這里和安裝時(shí)候的名字不一樣,使用命令:
import cv2
導(dǎo)入包。并且需要安裝matplotlib和numpy。
1、 圖片的讀取
img = cv2.imread("car_green.jpg")括號(hào)內(nèi)是圖片文件的名字,如果代碼與圖片在同一目錄下可以這樣做,但是如果不在同一目錄下,就需要包含圖片文件的完整路徑。使用該語句讀取圖片,將會(huì)返回一個(gè)ndarray類型的矩陣(行數(shù),列數(shù),通道數(shù))
顯示剛才讀取的圖片:
注意:opencv讀取到的圖片格式為BGR格式。
cv2.imshow("name", img)
# 等待時(shí)間, 毫秒級(jí), 0表示任意鍵終止
cv2.waitKey(0)2、獲取攝像頭的視頻流
def video_get():
capture = cv.VideoCapture(0)
# 保存視頻流的每一幀
while True:
ret, frame = capture.read()
# 翻轉(zhuǎn)圖像,原圖像是左右顛倒的
frame = cv.flip(frame, 1)
cv.imshow("video", frame)
c = cv.waitKey(50)
if c == 27:
break3、保存獲取到的圖像
cv.imwrite(想要保存的文件路徑, 圖像文件)
4、灰度圖轉(zhuǎn)化
讀取時(shí)直接讀取為灰度圖:
img = cv2.imread(path, cv.IMREAD_GRAYSCALE)
讀取時(shí)是彩色,轉(zhuǎn)化為灰度圖
img = cv.imread("car_red.jpg")
img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow("ing", img)
cv.waitKey(0)
cv.destroyAllWindows()5、獲取圖像的部分區(qū)域
由于讀取到的圖片是ndarray類型的,因此可以使用切片操作來獲取圖像的某一部分:
roi = img[ 起始:結(jié)束, 起始:結(jié)束]
6、將彩色圖片的通道拆分與合并
因?yàn)椴噬珗D片是三通道的,假設(shè)圖片尺寸為128x128,那么他就包含三個(gè)128*128的顏色矩陣
img = cv.imread("car_red.jpg")
cv.imshow("img", img)
# 注意格式為BGR
b, g, r = cv.split(img)
# 通道合并,注意矩陣的順序,這樣合成的圖片為BGR格式
img = cv.merge((b, g ,r))
cv.imshow("img1", img)
cv.waitKey(0)
cv.destroyAllWindows()三通道提取出來之后,每個(gè)通道其實(shí)如果顯示的話,就是單獨(dú)的灰度圖,因?yàn)閳D片的通道數(shù)變?yōu)?了。
想要顯示為RGB某一顏色,可以使用切片將其他顏色通道變?yōu)?
7、邊界填充
將圖片進(jìn)行邊界填充操作:
cv.copyMakeBorder(img, 50, 50, 50, 50, borderType=cv.BORDER_REFLECT)
其參數(shù)為,圖片源, 上下左右的填充距離(50,50,50,50), borderType參數(shù)表示填充方法。
BORDER_REPLICATE: 復(fù)制法,復(fù)制圖片最邊緣像素
BORDER_REFLECT:反射法,對(duì)感興趣的圖像像素在兩邊進(jìn)行復(fù)制
BRDER_REFLECT_101:反射法,以最邊緣像素為軸
BORDER_WRAP:外包裝法
BORDER_CONSTANT:常量法,常數(shù)值填充
記得在函數(shù)前定義一個(gè)變量接受該函數(shù)的返回值。
8、圖像尺寸更改
使用resize函數(shù)對(duì)圖片尺寸進(jìn)行修改
red = cv.imread("car_red.jpg")
# 括號(hào)內(nèi)的元組表示的是圖片的長(zhǎng)和寬,也就是其對(duì)于矩陣的列和行
red = cv.resize(red, (475, 245))圖片的尺寸我們使用長(zhǎng)和寬來表示,矩陣的大小使用的是行和列,對(duì)應(yīng)的圖片的長(zhǎng)就對(duì)應(yīng)與矩陣的列,因此要注意輸入的尺寸到底是圖片尺寸還是矩陣尺寸,對(duì)于方陣來說沒有區(qū)別,但是對(duì)于其他矩陣來說影響很大。
還有一種方法就是不指定其大小,通過指定x、y軸的擴(kuò)展倍數(shù)來完成圖像更改。
red = cv.resize(red, (0, 0),fx=3, fy=4 )
9、圖像融合
想要矩陣能相加,那么其必須是等尺寸的,在上面將兩圖處理為相同大小的圖片之后,就能對(duì)其進(jìn)行圖像融合處理操作了。
green = cv.imread("car_green.jpg")
print(green.shape)
red = cv.imread("car_red.jpg")
red = cv.resize(red, (475, 245))
print(red.shape)
res = cv.addWeighted(red, 0.4, green, 0.6, 0)
cv.imshow("res", res)
cv.waitKey(0)
cv.destroyAllWindows()圖像融合其本質(zhì)就是矩陣相加,上面的函數(shù)可以看作一個(gè)公式:
F = ared + bgreen + c
其中a = 0.4 b = 0.6, c = 0這些系數(shù)都是我們可以自己進(jìn)行設(shè)置的
處理后的圖片如下:

到此這篇關(guān)于opencv-python圖像處理安裝與基本操作的文章就介紹到這了,更多相關(guān)opencv python圖像處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基于gevent實(shí)現(xiàn)文件字符串查找器
這篇文章主要介紹了Python基于gevent實(shí)現(xiàn)文件字符串查找器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
聽歌識(shí)曲--用python實(shí)現(xiàn)一個(gè)音樂檢索器的功能
本篇文章中主要介紹了用python實(shí)現(xiàn)一個(gè)音樂檢索器,類似于QQ音樂的搖一搖識(shí)曲,有興趣的同學(xué)可以了解一下。2016-11-11
Python xpath表達(dá)式如何實(shí)現(xiàn)數(shù)據(jù)處理
這篇文章主要介紹了Python xpath表達(dá)式如何實(shí)現(xiàn)數(shù)據(jù)處理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
淺談Python實(shí)現(xiàn)Apriori算法介紹
這篇文章主要介紹了淺談Python實(shí)現(xiàn)Apriori算法介紹,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12
教你使用python做一個(gè)“罰點(diǎn)球”小游戲
這篇文章主要介紹了用python做一個(gè)“罰點(diǎn)球”小游戲,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
pandas?數(shù)據(jù)透視和逆透視的實(shí)現(xiàn)
本文介紹了pandas?數(shù)據(jù)透視和逆透視的實(shí)現(xiàn),包含pivot()方法透視及pivot_table()方法逆透視,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
Python使用for實(shí)現(xiàn)無限循環(huán)的多種方式匯總
這篇文章主要介紹了Python使用for實(shí)現(xiàn)無限循環(huán)的多種方式匯總,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Python基于FTP模塊實(shí)現(xiàn)ftp文件上傳操作示例
這篇文章主要介紹了Python基于FTP模塊實(shí)現(xiàn)ftp文件上傳操作,結(jié)合實(shí)例形式分析了Python引入ftp模塊及相關(guān)設(shè)置、文件傳輸?shù)炔僮骷记?需要的朋友可以參考下2018-04-04
Python實(shí)現(xiàn)PC屏幕截圖并自動(dòng)發(fā)送郵件
在當(dāng)前的數(shù)字化世界中,自動(dòng)化已經(jīng)成為我們?nèi)粘I詈凸ぷ髦械年P(guān)鍵部分,本文我們將探討如何使用Python來實(shí)現(xiàn)一個(gè)特定的自動(dòng)化任務(wù) - PC屏幕截圖自動(dòng)發(fā)送到指定的郵箱,感興趣的可以了解下2023-11-11

