QT Opencv 图像处理 视频处理 人脸识别
前言
近期學習了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里面的一些攝像頭處理
總結
以上是生活随笔為你收集整理的QT Opencv 图像处理 视频处理 人脸识别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈工大计算机系统大作业——hello P
- 下一篇: 对于 ACM程序设计选修课的感想