學習OpenCV,新手常會問我的十個問題
學習OpenCV,新手常會問我的十個問題
資料來源: https://mp.weixin.qq.com/s/MIH6ck779t80escYMvUkVQ
Q1
按照視頻做的,我怎麼顯示了不了圖像或者視頻
解答:
最常見的兩個原因如下:
-忘記waitKey(0) 或者waitKey(1)
-圖像/視頻文件路徑包含中文或者空格了,根本無法正確加載圖像。
Q2
我怎麼把我想要的區域取到,被自己蠢哭了
解答:
C++下,只要你有rect/box
直接這樣即可
Mat roi = image(rect)
就這麼簡單就可以獲取ROI區域了,針對不規則ROI區域,用下面的代碼搞定
bitwise_and(image, image, roi, mask)
其中mask是不規則ROI的遮罩區域。
Python下面截取矩形區域:
roi = image[y:y+height,x:x+width,:]
一句話搞定。
Q3
修改代碼之後出現waitKey(0)是紅色
解答:
直接關閉VS,重啟一下即可。
Q4
第一次運行程序,一直報錯說找不DLL文件
解答:
趕快去檢查/配置環境變量,看看有沒有把opencv_world+版本號d.dll所在路徑到系統環境變量path中去,如果沒有問題,重啟VS即可
Q5
OpenCV中怎麼沒有填充幾何對象的方法?
解答:
記得在繪製這些幾何形狀的時候把線寬參數設置為-1即可填充,大於零只會繪製描邊。記住就是這個參數lineWidth, 大於0表示描邊,小於零表示填充。對所有繪製圖形的API都是一樣。
Q6
我該學習OpenCV哪個版本,怎麼入門
解答:
現在最新版本是OpenCV4,直接從最新版本開始,避免浪費精力與時間,學完就領先別人一個身位。怎麼入門,簡單粗暴,從代碼開始,官方教程不錯,我們的視頻教程也不錯,系統化學習,遇到不懂的再查資料,針對性學習。銘記實踐是最好理論
Q7
VideoCapture讀視頻為什麼沒有聲音?為什麼我設置調整相機分辨率不起作用?
解答:
因為它只支持了視頻編解碼,不支持音頻,所以沒有聲音,更深入一點的原因,OpenCV是視覺處理庫,主要處理圖像與視頻,而不是聲音。VideoCapture設置相機分辨率不起作用,拜託請先檢查一下你的相機支持的分辨率是多少的,這個都沒搞清楚,就敢設置相機分辨率參數。
Q8
為什麼我編譯出來的OpenCV的lib裡面是一堆lib文件,沒有opencv_world相關lib文件
解答:
原因很簡單,記得cmake的時候把生成opencv world 選項勾上才可以
Q9
我是學習OpenCV C++版本還是Python版本
解答:
其實OpenCV現在SDK版本支持C++, Python,Java,JS等語言。學什麼語言主的SDK主要是看你想從事哪裡方向,如果想做機器視覺、相機開發的方向,建議學習OpenCV C++版本,如果是對開發板移植算法話,選擇C++,不過現在python也被很多開發板支持,特別是國外的智能硬件,多數都支持python語言開發,典型就是樹莓派。這個也是未來趨勢,所以選擇哪種語言,主要看個人喜好與興趣,學到精通才是王道。
10
OpenCV4與前面的版本有什麼區別
解答:
其實在傳統的圖像處理模塊中沒有什麼區別,但是OpenCV4對深度神經網絡支持,已經集成支持tensorflow/caffe的離線模型,OpenVINO的加速支持,從模型訓練到部署加速,OpenCV4技術棧可以全部搞定,非常值得學習,未來IOT設備支持與開發市場,OpenCV因為其開源屬性將會最受歡迎與得力的開發工具,所以簡單點說OpenCV4比前面的版本多了兩個核心技術加持,深度神經網絡與加速引擎技術