最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenCV圖像處理GUI功能詳解

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

OpenCV圖像處理

一、圖像入門

1.讀取圖像

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

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

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

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

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

2.顯示圖像

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

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

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

cv.waitKey() 是一個鍵盤綁定函數(shù),它的參數(shù)是以毫秒為單位的時間。該函數(shù)為任意鍵盤事件等待指定毫秒。如果你在這段時間內(nèi)按下任意鍵,程序?qū)⒗^續(xù)。如果傳的是 0,它會一直等待鍵盤按下。
cv.destroyAllWindows() 簡單的銷毀我們創(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()

也可以同時顯示兩張圖像

有一種特殊情況,你可以先創(chuàng)建一個窗口然后加載圖像到該窗口。在這種情況下,你能指定窗口是否可調(diào)整大小。它是由這個函數(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()

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

3.保存圖像

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

第一個參數(shù)是文件名,第二個參數(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‘ 會保存和退出圖像,或者按下 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.用相機捕捉視頻

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

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
while(True):
    # 一幀一幀捕捉
    ret, frame = cap.read()
    # 我們對幀的操作在這里
    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 對象
cap.release()
cv.destroyAllWindows()

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

2.播放視頻文件

它和從相機捕獲一樣,只需要用視頻文件名更改相機索引。同時顯示 frame,為 cv.waitKey() 使用合適的時間。如果它太小,視頻將非???,如果太大,視頻將很慢 (嗯,這就是如何顯示慢動作)。正常情況下,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.保存視頻

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

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

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

In Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID 是最合適的. MJPG 結(jié)果比較大. X264 結(jié)果比較小)
In Windows: DIVX (還需要測試和添加跟多內(nèi)容)
In OSX: MJPG (.mp4), DIVX (.avi), X264 (.mkv).
對于 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 對象
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的入門知識,還是很好理解的。

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

相關(guān)文章

  • python設(shè)計模式大全

    python設(shè)計模式大全

    這篇文章主要介紹了python設(shè)計模式,通過簡單的代碼實現(xiàn)了Python常見的各種設(shè)計模式,包括橋接模式、觀測者模式、適配器模式、工廠模式、單例模式等,需要的朋友可以參考下
    2016-06-06
  • python控制windows剪貼板,向剪貼板中寫入圖片的實例

    python控制windows剪貼板,向剪貼板中寫入圖片的實例

    今天小編就為大家分享一篇python控制windows剪貼板,向剪貼板中寫入圖片的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 獨特的python循環(huán)語句

    獨特的python循環(huán)語句

    本文主要給大家介紹的是Python循環(huán)語句與其他編程語言中的循環(huán)語句不同的地方,非常的獨特,有需要的小伙伴可以參考下
    2016-11-11
  • python支付寶支付示例詳解

    python支付寶支付示例詳解

    這篇文章主要為大家詳細(xì)介紹了python支付寶支付示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 解決pycharm19.3.3安裝pyqt5找不到designer.exe和pyuic.exe的問題

    解決pycharm19.3.3安裝pyqt5找不到designer.exe和pyuic.exe的問題

    這篇文章給大家介紹了pycharm19.3.3安裝pyqt5&pyqt5-tools后找不到designer.exe和pyuic.exe以及配置QTDesigner和PyUIC的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-04-04
  • Python?GUI和游戲開發(fā)從入門到實踐

    Python?GUI和游戲開發(fā)從入門到實踐

    GUI是圖形用戶界面的縮寫,圖形化的用戶界面對使用過計算機的人來說應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Python圖形用戶界面與游戲開發(fā)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • python實現(xiàn)讀取大文件并逐行寫入另外一個文件

    python實現(xiàn)讀取大文件并逐行寫入另外一個文件

    下面小編就為大家分享一篇python實現(xiàn)讀取大文件并逐行寫入另外一個文件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • OpenCV MediaPipe實現(xiàn)顏值打分功能

    OpenCV MediaPipe實現(xiàn)顏值打分功能

    這篇文章主要介紹了通過OpenCV MediaPipe實現(xiàn)攝像頭實時檢測顏值打分功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,感興趣的可以了解一下
    2021-12-12
  • 使用python爬取連續(xù)降水?dāng)?shù)據(jù)信息實例

    使用python爬取連續(xù)降水?dāng)?shù)據(jù)信息實例

    這篇文章主要為大家介紹了使用python提取連續(xù)降水?dāng)?shù)據(jù)信息實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • 詳解python?flask是如何預(yù)防CSRF攻擊

    詳解python?flask是如何預(yù)防CSRF攻擊

    CSRF(Cross-site?request?forgery)攻擊是一種常見的網(wǎng)絡(luò)安全漏洞,它可以通過欺騙用戶執(zhí)行惡意請求來攻擊?Web?應(yīng)用程序,本篇文章將介紹python?flask是如何預(yù)防CSRF攻擊,需要的朋友可以參考下
    2024-04-04

最新評論

若尔盖县| 梁平县| 山西省| 徐闻县| 京山县| 香港 | 关岭| 关岭| 昌邑市| 东台市| 平果县| 青冈县| 探索| 泰兴市| 谷城县| 江津市| 彰化县| 革吉县| 日喀则市| 乌拉特前旗| 瑞丽市| 贵港市| 云霄县| 政和县| 海伦市| 达孜县| 东海县| 清涧县| 奉新县| 大宁县| 枣阳市| 乌鲁木齐市| 郓城县| 伊吾县| 沁阳市| 万山特区| 绵竹市| 怀柔区| 太湖县| 荔波县| 靖边县|