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

OpenCV圖像處理GUI功能詳解

 更新時(shí)間:2022年03月22日 14:02:41   作者:我與nano  
GUI功能是opencv的入門知識(shí),本文給大家介紹下OpenCV圖像處理GUI功能,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,感興趣的朋友一起看看吧

OpenCV圖像處理

一、圖像入門

1.讀取圖像

使用 cv.imread() 函數(shù)讀取一張圖像,圖片應(yīng)該在工作目錄中,或者應(yīng)該提供完整的圖像路徑。第二個(gè)參數(shù)是一個(gè) flag,指定了應(yīng)該讀取圖像的方式

cv.IMREAD_COLOR:加載彩色圖像,任何圖像的透明度都會(huì)被忽略,它是默認(rèn)標(biāo)志
cv.IMREAD_GRAYSCALE:以灰度模式加載圖像
cv.IMREAD_UNCHANGED:加載圖像,包括 alpha 通道
Note

你可以簡(jiǎn)單地分別傳遞整數(shù) 1、0 或-1,而不是這三個(gè) flag。

import numpy as np
import cv2 as cv
# 用灰度模式加載圖像
img = cv.imread('messi5.jpg', 0) 

即使圖像路徑錯(cuò)誤,它也不會(huì)拋出任何錯(cuò)誤,但是打印 img會(huì)給你None

2.顯示圖像

用 cv.imshow() 函數(shù)在窗口中顯示圖像,窗口自動(dòng)適應(yīng)圖像的大小。

第一個(gè)參數(shù)是窗口名,它是一個(gè)字符串,第二個(gè)參數(shù)就是我們的圖像。你可以根據(jù)需要?jiǎng)?chuàng)建任意數(shù)量的窗口,但是窗口名字要不同。

cv.imshow('image', img)
cv.waitKey(0)  #毫秒級(jí)顯示,如果是0就是按下任意按鍵結(jié)束顯示
cv.destroyAllWindows()

cv.waitKey() 是一個(gè)鍵盤綁定函數(shù),它的參數(shù)是以毫秒為單位的時(shí)間。該函數(shù)為任意鍵盤事件等待指定毫秒。如果你在這段時(shí)間內(nèi)按下任意鍵,程序?qū)⒗^續(xù)。如果傳的是 0,它會(huì)一直等待鍵盤按下。
cv.destroyAllWindows() 簡(jiǎn)單的銷毀我們創(chuàng)建的所有窗口。如果你想銷毀任意指定窗口,應(yīng)該使用函數(shù) cv.destroyWindow() 參數(shù)是確切的窗口名。

import numpy as np
import cv2 as cv
# 用RGB模式加載圖像
img = cv.imread('1.jpg', 1)
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

也可以同時(shí)顯示兩張圖像

有一種特殊情況,你可以先創(chuàng)建一個(gè)窗口然后加載圖像到該窗口。在這種情況下,你能指定窗口是否可調(diào)整大小。它是由這個(gè)函數(shù)完成的 cv.namedWindow()。默認(rèn)情況下,flag 是 cv.WINDOW_AUTOSIZE。但如果你指定了 flag 為 cv.WINDOW_NORMAL,你能調(diào)整窗口大小。當(dāng)圖像尺寸太大,在窗口中添加跟蹤條是很有用的。

import numpy as np
import cv2 as cv
# 用RGB模式加載圖像
img = cv.imread('1.jpg', 1)
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

可以看到圖片可以拉伸,也可以自己去對(duì)比一下效果。

3.保存圖像

保存圖像,用這個(gè)函數(shù) cv.imwrite()。

第一個(gè)參數(shù)是文件名,第二個(gè)參數(shù)是你要保存的圖像。

import numpy as np
import cv2 as cv
# 用RGB模式加載圖像
img = cv.imread('1.jpg', 1)
cv.imwrite('11.jpg',img)  #將1.jpg保存為11.jpg
cv.namedWindow('image', cv.WINDOW_NORMAL)
cv.imshow('image',img)
cv.waitKey(0)
cv.destroyAllWindows()

圖像小結(jié)
下面的程序以灰度模式讀取圖像,顯示圖像,如果你按下 's‘ 會(huì)保存和退出圖像,或者按下 ESC 退出不保存。

import numpy as np
import cv2 as cv

img = cv.imread('11.jpg',0)
cv.imshow('image',img)
k = cv.waitKey(0)
if k == 27: # ESC 退出
    cv.destroyAllWindows()
elif k == ord('s'): # 's' 保存退出
    cv.imwrite('m.jpg',img)
    cv.destroyAllWindows()

二、視頻入門

1.用相機(jī)捕捉視頻

通常,我們用相機(jī)捕捉直播。OpenCV 為此提供了一個(gè)非常簡(jiǎn)單的接口。我們用相機(jī)捕捉一個(gè)視頻(我用的電腦內(nèi)置攝像頭),將它轉(zhuǎn)換成灰度視頻并顯示。去獲取一個(gè)視頻,你需要?jiǎng)?chuàng)建一個(gè)VideoCapture對(duì)象。它的參數(shù)可以是設(shè)備索引或者一個(gè)視頻文件名。設(shè)備索引僅僅是攝像機(jī)編號(hào)。通常會(huì)連接一臺(tái)攝像機(jī)(as in my case)。所以我只傳了 0(或者-1)。你可以通過傳 1 來選擇第二個(gè)攝像機(jī),以此類推。之后,你能逐幀捕獲。但是最后,不要忘記釋放這個(gè) Capture 對(duì)象。

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
while(True):
    # 一幀一幀捕捉
    ret, frame = cap.read()
    # 我們對(duì)幀的操作在這里
    gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)  # cv.COLOR_BGR2RG顯示彩色圖像
    # 顯示返回的每幀
    cv.imshow('frame',gray)
    if cv.waitKey(1) & 0xFF == ord('q'):
        break
# 當(dāng)所有事完成,釋放 VideoCapture 對(duì)象
cap.release()
cv.destroyAllWindows()

cap.read() 返回一個(gè) bool 值(True/False)。如果加載成功,它會(huì)返回True。因此,你可以通過這個(gè)返回值判斷視頻是否結(jié)束。

2.播放視頻文件

它和從相機(jī)捕獲一樣,只需要用視頻文件名更改相機(jī)索引。同時(shí)顯示 frame,為 cv.waitKey() 使用合適的時(shí)間。如果它太小,視頻將非???,如果太大,視頻將很慢 (嗯,這就是如何顯示慢動(dòng)作)。正常情況下,25 毫秒就可以了。

import numpy as np
import cv2 as cv
cap = cv.VideoCapture('FinalVideo_1642014289.728580.MP4')
while(cap.isOpened()):
    ret, frame = cap.read()
    gray = cv.cvtColor(frame, cv.COLOR_BGR2RGB)
    cv.imshow('frame',gray)
    if cv.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv.destroyAllWindows()

視頻只有30秒左右,可以看到視頻播放速度很快,像是原視頻2倍速播放一樣。

3.保存視頻

我們捕獲視頻,逐幀處理然后保存下來。對(duì)于圖像來說,是非常的簡(jiǎn)單,就用 cv.imwrite()。這里需要做更多的工作。

這次我們創(chuàng)建一個(gè) VideoWriter 對(duì)象。我們應(yīng)該指定輸出文件的名字 (例如:output.avi)。然后我們應(yīng)該指定 FourCC 碼。然后應(yīng)該傳遞每秒幀數(shù)和幀大小。最后一個(gè)是 isColor flag。如果是 True,編碼器期望彩色幀,否則它適用于灰度幀。

FourCC 是用于指定視頻解碼器的 4 字節(jié)代碼。這里 fourcc.org 是可用編碼的列表。它取決于平臺(tái),下面編碼就很好。

In Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID 是最合適的. MJPG 結(jié)果比較大. X264 結(jié)果比較小)
In Windows: DIVX (還需要測(cè)試和添加跟多內(nèi)容)
In OSX: MJPG (.mp4), DIVX (.avi), X264 (.mkv).
對(duì)于 MJPG, FourCC 的代碼作為 cv.VideoWriter_fourcc(‘M’,‘J’,‘P’,‘G’) 或 cv.VideoWriter_fourcc(‘MJPG’)* 傳遞。

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
# 聲明編碼器和創(chuàng)建 VideoWrite 對(duì)象
fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('output.avi',fourcc, 20.0, (640,480))
while(cap.isOpened()):
    ret, frame = cap.read()
    if ret==True:
        frame = cv.flip(frame,0)
        # 寫入已經(jīng)翻轉(zhuǎn)好的幀
        out.write(frame)
        cv.imshow('frame',frame)
        if cv.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break
# 釋放已經(jīng)完成的工作
cap.release()
out.release()
cv.destroyAllWindows() 

可以看到有avi文件生成。

總結(jié)

GUI功能是opencv的入門知識(shí),還是很好理解的。

到此這篇關(guān)于OpenCV圖像處理——GUI功能的文章就介紹到這了,更多相關(guān)OpenCV圖像處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解基于Facecognition+Opencv快速搭建人臉識(shí)別及跟蹤應(yīng)用

    詳解基于Facecognition+Opencv快速搭建人臉識(shí)別及跟蹤應(yīng)用

    這篇文章主要介紹了詳解基于Facecognition+Opencv快速搭建人臉識(shí)別及跟蹤應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python繪制簡(jiǎn)單折線圖代碼示例

    python繪制簡(jiǎn)單折線圖代碼示例

    這篇文章主要介紹了python繪制簡(jiǎn)單折線圖代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Python正則表達(dá)中re模塊的使用

    Python正則表達(dá)中re模塊的使用

    這篇文章主要介紹了Python正則表達(dá)中re模塊的使用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-09-09
  • 提升python處理速度原理及方法實(shí)例

    提升python處理速度原理及方法實(shí)例

    這篇文章主要介紹了提升python處理速度原理及方法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python編寫簡(jiǎn)單爬蟲資料匯總

    python編寫簡(jiǎn)單爬蟲資料匯總

    本文給大家匯總介紹了下幾種使用Python編寫簡(jiǎn)單爬蟲的方法和代碼,非常的不錯(cuò),這里分享給大家,希望大家能夠喜歡。
    2016-03-03
  • pycharm安裝中文插件的2種方法圖文詳解

    pycharm安裝中文插件的2種方法圖文詳解

    PyCharm可以說是當(dāng)今最流行的一款Python?IDE了,下面這篇文章主要給大家介紹了關(guān)于pycharm安裝中文插件的2種方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 實(shí)例講解Python腳本成為Windows中運(yùn)行的exe文件

    實(shí)例講解Python腳本成為Windows中運(yùn)行的exe文件

    在本篇文章里小編給大家分享了關(guān)于Python腳本成為Windows中運(yùn)行的exe文件的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-01-01
  • Python辦公自動(dòng)化之文件的比較合并與xml操作

    Python辦公自動(dòng)化之文件的比較合并與xml操作

    這篇文章主要為大家詳細(xì)介紹了Python辦公自動(dòng)化之文件的比較合并與xml文件操作的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-12-12
  • django搭建項(xiàng)目配置環(huán)境和創(chuàng)建表過程詳解

    django搭建項(xiàng)目配置環(huán)境和創(chuàng)建表過程詳解

    這篇文章主要介紹了django搭建項(xiàng)目配置環(huán)境和創(chuàng)建表過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python OpenCV學(xué)習(xí)之特征點(diǎn)檢測(cè)與匹配詳解

    Python OpenCV學(xué)習(xí)之特征點(diǎn)檢測(cè)與匹配詳解

    提取圖像的特征點(diǎn)是圖像領(lǐng)域中的關(guān)鍵任務(wù),不管在傳統(tǒng)還是在深度學(xué)習(xí)的領(lǐng)域中,特征代表著圖像的信息,對(duì)于分類、檢測(cè)任務(wù)都是至關(guān)重要的。這篇文章主要為大家詳細(xì)介紹了OpenCV特征點(diǎn)檢測(cè)與匹配,需要的可以參考一下
    2022-01-01

最新評(píng)論