前言
近期學習了OpenCV的一些函式 然后配合著函式跟QT的一些UI寫一個影像跟視頻處理跟攝像頭處理的一些功能 但是這個主要的一個框架是學習一個視頻的 當時主要講的是一個OpenCV的視頻處理的 UI是仿照一位作者的 然后因為記錄確實有點遠 找不到了 先宣告一下
一、作品展示
圖片處理


視頻處理


攝像頭處理


二、運行的邏輯
先是執行緒不斷回圈通過UI傳入的圖片 視頻 進行讀取保存 通過我們的PV_Filter將一幀的圖片進行一個處理 處理結束之后回傳的一幀交還給UI進行顯示

然后要引入OpenCV的庫 這個…網上有方法 以前引入的 好像是你只要會圖片處理的一些演算法 應該也是可以做到不用OpenCV的庫也可以處理…不太清楚
三、PV_Filter

首先是PVFilter
PVFilter其實就是將QList的所有添加的模式做一個處理

Add就是簡單的一個PushBack

四、PVActionPro 具體函式的處理
人臉識別

X鏡像 Y鏡像

旋轉

灰度圖

膨脹

腐蝕

均值濾波

因為設定成0的時候Bug過 所以就設定了一個限制
邊緣檢測

copy一份是因為好像內部輸入跟輸出的Mat不能相等
亮度與對比度

value是對比度 value1是亮度 (大概 不然就反過來-,-)
增加RGB值的通道

二值化

五、OpenCV_PV_Thread執行緒
1.一些宣告


1.首先是圖片的處理
打開圖片

run內部的關于圖片的處理

2.然后是視頻的一些處理
打開視頻 獲取FPS是為了在run中Sleep
SwitchPlayIcon是為了切換播放的圖示顯示

視頻錄制
因為視頻錄制需要VideoWriter先呼叫open
open需要獲取的幾個值
路徑 fourcc Fps 長寬 以及是否是彩圖或灰度圖

停止錄制

run內部回圈的一些視頻處理
這邊的邏輯是 如果暫停那就停止讀取下一幀Mat
如果是Read不到下一幀 那可能是視頻播放完畢 處于錄制狀態要停止錄制
如果處于保存一幀圖片的情況就用imwrite處理就好
如果是處于錄制狀態 則需要知道他的開始位置跟結束位置(ui有一個開始跟停止的Slider)
如果存在開始就調到開始 跟計算結束的位置停止錄制就好

3.攝像頭的處理
一樣是呼叫Open函式 填數字代表的是你計算機內部的設備(沒記錯的話)

因為攝影保存的方式個視頻保存的方式一樣 只是沒有一個StartPos 跟 EndPos
所以這邊就不貼了 跟上面差不多哦
run里面的一些攝像頭處理

六、最后總結
因為雖然借助執行緒 但是我寫的會在一些函式耗費不少的時間 就會導致看起來很卡頓 如果大家有什么幫助的話請私信我 或是評論 先謝謝大家
Have a good Time,最后補一句 SS 永遠的神,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291585.html
標籤:其他
上一篇:STM32F103+全彩LED顯示屏+萬年歷鬧鐘+FFT音頻頻譜制作
下一篇:HWC格式(Torch)
