matlab和opencv混編(mex問題,mexopencv問題)(水下相機折射補償:Pinax-model)

1.mexopencv

這是個程序,實現了在matlab方便地引入opencv。
有衆多版本,不同版本對應不同opencv。
mexopencv 2.4(適用opencv2.4及以上版本):
https://github.com/kyamagu/mexopencv/tree/v2.4
mexopencv 3.4.1(適用opencv3.4.1版本):
https://github.com/kyamagu/mexopencv
下載瞭解壓就好,不用安裝。

2.opencv

opencv2的版本直接壓就可以使用
opencv3下載後,需要用cmake編譯一下,然後在vs中生成,才能用。
(其中可能遇到的問題:編譯時出現紅色字體錯誤,建議編譯時把電腦裝的python和cuda卸載了,因爲有這兩個在opencv3編譯時會對這兩項進行編譯,但是這樣由於版本問題以及安裝環境問題很容易造成錯誤,所以乾脆不要編譯了;在vs生成時也是,如果之前存在python,生成會出現找不到lib的錯誤)
這裏還要提示一下,用mexopencv 3.4.1時,其尋找大連接爲…….lib,而咱們debug生成的文件爲……d.lib,所以很容易找不到lib,因此在vs生成時選用Release

在這裏插入圖片描述
對兩項進行生成。

3.matlab使用opencv

在matlab中使用下列語句進行調用和編譯

addpath('E:\opencv\mexopencv-2.4')%mexopencv的解壓位置
mexopencv.make('opencv_path','E:\opencv\opencv\build')%opencv的build位置,opencv3的爲install位置

完成後就可以在matlab中用opencv的程序了,需要哪個函數,直接cv.哪個函數
例如

img=cv.imread('Img.jpg');

4.水下相機折射補償

The Pinax-Model for Accurate and Efficient Refraction Correction of Underwater Cameras in Flat-Pane Housings: MATLAB Examples
https://github.com/tomluc/Pinax-camera-model
本文做了兩點
①找到了最合適的相機到玻璃的距離,使得發生折射後的相機更接近小孔相機
②利用空氣中標定的參數,再利用相機到玻璃的距離、玻璃厚度、以及玻璃和水的折射率獲得折射補償函數,進而對摺射進行修正。

原文中說的
To run this example mex opencv is required (https://github.com/kyamagu/mexopencv).
這個需要用到opencv3.4.1,然後怎麼弄都不對,後來直接用opencv2.4,發現也能執行,所以覺得有點坑,大家可以借鑑一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章