欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

opencv-python圖像處理安裝與基本操作方法

 更新時間:2022年01月05日 09:26:41   作者:NewSuNess  
OpenCV是一個C++庫,目前流行的計算機視覺編程庫,用于實時處理計算機視覺方面的問題,它涵蓋了很多計算機視覺領(lǐng)域的模塊。在Python中常使用OpenCV庫實現(xiàn)圖像處理。本文介紹opencv-python圖像處理安裝與基本操作,感興趣的朋友一起看看吧

一、安裝opencv

關(guān)于opencv的安裝,如果是windows系統(tǒng)下使用pycharm,那么直接在在終端使用pip命令或者點擊設(shè)置-python解釋器輸入opencv-python即可

如果使用的是conda,那也可以使用pip命令或者conda install 安裝
在linux下的話更加簡單。而且也會少很多無緣無故的bug,推薦使用linux系統(tǒng)。linux下使用終端輸入pip或者pip3 install opencv-python即可,前提是已經(jīng)安裝了python并且設(shè)置好了路徑變量。

二、 opencv使用

想要使用opencv,必須在代碼開頭導入opencv的包,這里和安裝時候的名字不一樣,使用命令:
import cv2
導入包。并且需要安裝matplotlib和numpy。
1、 圖片的讀取

img = cv2.imread("car_green.jpg")

括號內(nèi)是圖片文件的名字,如果代碼與圖片在同一目錄下可以這樣做,但是如果不在同一目錄下,就需要包含圖片文件的完整路徑。使用該語句讀取圖片,將會返回一個ndarray類型的矩陣(行數(shù),列數(shù),通道數(shù))
顯示剛才讀取的圖片:
注意:opencv讀取到的圖片格式為BGR格式。

cv2.imshow("name", img)
# 等待時間, 毫秒級, 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:
            break

3、保存獲取到的圖像

cv.imwrite(想要保存的文件路徑, 圖像文件)

4、灰度圖轉(zhuǎn)化
讀取時直接讀取為灰度圖:

img = cv2.imread(path, cv.IMREAD_GRAYSCALE)

讀取時是彩色,轉(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、將彩色圖片的通道拆分與合并
因為彩色圖片是三通道的,假設(shè)圖片尺寸為128x128,那么他就包含三個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()

三通道提取出來之后,每個通道其實如果顯示的話,就是單獨的灰度圖,因為圖片的通道數(shù)變?yōu)?了。
想要顯示為RGB某一顏色,可以使用切片將其他顏色通道變?yōu)?

7、邊界填充
將圖片進行邊界填充操作:

cv.copyMakeBorder(img, 50, 50, 50, 50, borderType=cv.BORDER_REFLECT)

其參數(shù)為,圖片源, 上下左右的填充距離(50,50,50,50), borderType參數(shù)表示填充方法。
BORDER_REPLICATE: 復制法,復制圖片最邊緣像素
BORDER_REFLECT:反射法,對感興趣的圖像像素在兩邊進行復制
BRDER_REFLECT_101:反射法,以最邊緣像素為軸
BORDER_WRAP:外包裝法
BORDER_CONSTANT:常量法,常數(shù)值填充
記得在函數(shù)前定義一個變量接受該函數(shù)的返回值。
8、圖像尺寸更改
使用resize函數(shù)對圖片尺寸進行修改

red = cv.imread("car_red.jpg")
# 括號內(nèi)的元組表示的是圖片的長和寬,也就是其對于矩陣的列和行
red = cv.resize(red, (475, 245))

圖片的尺寸我們使用長和寬來表示,矩陣的大小使用的是行和列,對應的圖片的長就對應與矩陣的列,因此要注意輸入的尺寸到底是圖片尺寸還是矩陣尺寸,對于方陣來說沒有區(qū)別,但是對于其他矩陣來說影響很大。
還有一種方法就是不指定其大小,通過指定x、y軸的擴展倍數(shù)來完成圖像更改。

red = cv.resize(red,  (0, 0),fx=3, fy=4 )

9、圖像融合
想要矩陣能相加,那么其必須是等尺寸的,在上面將兩圖處理為相同大小的圖片之后,就能對其進行圖像融合處理操作了。

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ù)可以看作一個公式:
F = ared + bgreen + c
其中a = 0.4 b = 0.6, c = 0這些系數(shù)都是我們可以自己進行設(shè)置的
處理后的圖片如下:

到此這篇關(guān)于opencv-python圖像處理安裝與基本操作的文章就介紹到這了,更多相關(guān)opencv python圖像處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實現(xiàn)合并兩個有序列表的示例代碼

    python實現(xiàn)合并兩個有序列表的示例代碼

    這篇文章主要介紹了python實現(xiàn)合并兩個有序列表的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Python的UTC時間轉(zhuǎn)換講解

    Python的UTC時間轉(zhuǎn)換講解

    今天小編就為大家分享一篇關(guān)于Python的UTC時間轉(zhuǎn)換講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • pycharm連接spark教程

    pycharm連接spark教程

    這篇文章詳細介紹了如何在PyCharm中配置Hadoop和Spark環(huán)境,并提供了一個Python代碼示例來測試連接
    2025-01-01
  • 利用Python腳本實現(xiàn)ping百度和google的方法

    利用Python腳本實現(xiàn)ping百度和google的方法

    最近在做SEO的時候,為了讓發(fā)的外鏈能夠快速的收錄,想到了利用ping的功能,google和百度都有相關(guān)的ping介紹,有興趣的朋友可以去看看相關(guān)的知識。下面這篇文章主要介紹了利用Python腳本實現(xiàn)ping百度和google的方法,需要的朋友可以參考借鑒,一起來看看吧。
    2017-01-01
  • python-地圖可視化組件folium的操作

    python-地圖可視化組件folium的操作

    這篇文章主要介紹了python-地圖可視化組件folium的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 使用celery執(zhí)行Django串行異步任務的方法步驟

    使用celery執(zhí)行Django串行異步任務的方法步驟

    這篇文章主要介紹了使用celery執(zhí)行Django串行異步任務,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Django具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • Python快速生成定制化的Word(docx)文檔

    Python快速生成定制化的Word(docx)文檔

    這篇文章主要為大家介紹了如何使用Python快速生成定制化的Word文檔實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 深入了解Python?中線程和進程區(qū)別

    深入了解Python?中線程和進程區(qū)別

    這篇文章主要介紹了深入了解Python?中線程和進程區(qū)別,一個進程由一個或者多個線程組成,線程是一個進程中代碼的不同執(zhí)行路線。切換進程需要的資源比切換線程的要多的多,下面來了解更多的詳細內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • python 排序算法總結(jié)及實例詳解

    python 排序算法總結(jié)及實例詳解

    這篇文章主要介紹了python 排序算法總結(jié)及實例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Python中的time模塊和calendar模塊

    Python中的time模塊和calendar模塊

    這篇文章主要介紹了Python中的time模塊和calendar模塊,在Python中對時間和日期的處理方式有很多,其中轉(zhuǎn)換日期是最常見的一個功能。Python中的時間間隔是以秒為單位的浮點小數(shù)。下面來看看文章具體內(nèi)容的介紹,需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11

最新評論