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

OpenCV圖像處理GUI功能詳解

 更新時(shí)間:2022年03月22日 14:02:41   作者:我與nano  
GUI功能是opencv的入門知識,本文給大家介紹下OpenCV圖像處理GUI功能,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(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

你可以簡單地分別傳遞整數(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)  #毫秒級顯示,如果是0就是按下任意按鍵結(jié)束顯示
cv.destroyAllWindows()

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

也可以同時(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()

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

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

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

這次我們創(chuàng)建一個(gè) VideoWriter 對象。我們應(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 (還需要測試和添加跟多內(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è)計(jì)模式大全

    python設(shè)計(jì)模式大全

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

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

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

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

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

    python支付寶支付示例詳解

    這篇文章主要為大家詳細(xì)介紹了python支付寶支付示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    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í)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-04-04
  • Python?GUI和游戲開發(fā)從入門到實(shí)踐

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

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

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

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

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

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

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

    這篇文章主要為大家介紹了使用python提取連續(xù)降水?dāng)?shù)據(jù)信息實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jì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

最新評論

磴口县| 贵阳市| 苏尼特右旗| 永平县| 浙江省| 樟树市| 祁阳县| 寿宁县| 安福县| 鲜城| 舞阳县| 花莲市| 高碑店市| 吉隆县| 塘沽区| 柞水县| 来安县| 澎湖县| 黄骅市| 庆阳市| 方城县| 教育| 深圳市| 泸溪县| 彰武县| 胶南市| 清远市| 巴彦县| 时尚| 民权县| 西乌珠穆沁旗| 松原市| 蓬安县| 永德县| 梅河口市| 马山县| 沙湾县| 陕西省| 高台县| 彰化县| 扶沟县|