cenOS 安裝opencv(for matlab)
一、CenOS安裝matlab R2017b
https://blog.csdn.net/u012222078/article/details/78673066
注:
- 教程中的測試是不是安裝成功應該放在安裝破解檔案之後執行。
- 首次執行matlab要用root許可權
- MATLAB R2017b Linux 破解版
連結:https://pan.baidu.com/s/14LtiZB8I4TtjNI-l8Wi8QA 密碼:5pzl
二、CenOS安裝opencv 3.3.1
##2.1 安裝依賴包
yum install gcc gcc-c++ gtk2-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtool nasm
##2.2 安裝步驟:
參考:部落格園https://www.cnblogs.com/hc101/p/7890115.html
1).安裝依賴:
sudo yum groupinstall “Development Tools” -y
sudo yum install gcc cmake gtk2-devel numpy pkgconfig -y
2).下載opencv3.3.1.zip檔案到~/Downloads/資料夾:
GitHub:https://github.com/opencv/opencv/archive/3.3.1.zip
百度網盤:https://pan.baidu.com/s/1cpXbt0
3).解壓opencv3.3.1.zip檔案到當前資料夾(~/Downloads/):
cd ~/Downloads
unzip opencv3.3.1.zip
4).編譯原始檔和安裝:
cd ~/Downloads/opencv-3.3.1
mkdir build
cd build
sudo cmake -D CMAKE_BUILD_TYPE=DEBUG -D CMAKE_INSTALL_PREFIX=/usr/local …
sudo make
sudo make install
【注】:
- 如需要下載opencv其他版本可前往https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/下載
- sudo cmake這一步如果報錯"libc.so.6: version `GLIBC_2.14’ not found",參考:
https://www.cnblogs.com/erygreat/p/7223829.html
#三、安裝mexopenCV 3.3.1
mexopencv是一個十分實用的matlab工具箱,為matlab提供了openCV大部分的函式,使用者可以在matlab中呼叫編譯好的函式。
##1. 下載解壓
下載地址:https://github.com/kyamagu/mexopencv/tree/v3.3.1
注意:mexopencv版本要與opencv版本一致,否則編譯會出錯
下載mexopencv-3.3.1.zip到/usr/local/MATLAB/R2017b/toolbox(地址隨意,這個只是舉個栗子),unzip命令解壓 unzip v3.3.1
##2. 修改檔案的使用者屬性
sudo chown -R hyt:hyt mexopencv-3.3.1 #修改檔案和資料夾的使用者和使用者組屬性(-R ,可遞迴遍歷子目錄)
這裡的hyt的我的使用者名稱
##3. 編譯
開啟matlab,在matlab中輸入:
addpath(genpath('/usr/local/MATLAB/R2017b/toolbox/mexopencv-3.3.1')) %將mexopencv新增到matlab路徑
mexopencv.make('opencv_path', '/home/hyt/opencv-3.3.1/build') %編譯 這裡的路徑是部落格園連結裡面build的路徑
#四、應用–目標追蹤DSST
##4.1 編譯
編譯mexResize.cpp 、MxArray.cpp
mex -lopencv_core -lopencv_imgproc -L/usr/local/include/ -I/usr/local/include/ mexResize.cpp MxArray.cpp
這裡的-L/usr/local/include/ 和-I/usr/local/include/是由第2.2節第(4)步CMAKE_INSTALL_PREFIX=/usr/local 決定的。
引數註釋:
-l<name>
Link with object library. On Linux, to "lib<name>.so".
-L<folder>
Add <folder> to the list of folders to search for
libraries specified with the -l option. Do not add a space
after this switch.
-I<pathname>
Add <pathname> to the list of directories to search for #include
files. Do not add a space after this switch.
##4.2 下斷點
###語法
-
dbstop in file
-
dbstop in file at location
-
dbstop in file if expression
-
dbstop in file at location if expression
-
dbstop if condition
-
dbstop(b)
###說明 -
dbstop in file 在 file 中的第一個可執行程式碼行位置設定斷點。當您執行 file 時,MATLAB® 進入除錯模式,在斷點處暫停執行並顯示暫停位置對應的行。
-
dbstop in file at location 在指定位置設定斷點。MATLAB 執行會在到達該位置之前立即暫停,除非該位置處是一個匿名函式。如果該位置處是匿名函式,則執行將在斷點之後立即暫停。
-
dbstop in file if expression 在檔案的第一個可執行程式碼行位置設定條件斷點。僅在 expression 的計算結果為 true (1) 時暫停執行。
-
dbstop in file at location if expression 在指定位置設定條件斷點。僅在 expression 計算結果為 true 時,於該位置處或該位置前暫停執行。
-
dbstop if condition 在滿足指定的 condition(如 error 或 naninf)的行位置處暫停執行。與其他斷點不同,您不在特定檔案中的特定行設定此斷點。MATLAB 會在發生指定的 condition 時在任何檔案的任何行暫停執行。
-
dbstop(b) 用於恢復您之前儲存到 b 的斷點。包含儲存的斷點的檔案必須位於搜尋路徑中或當前資料夾中。MATLAB 按行號分配斷點;因此,檔案中的行數必須與儲存斷點時的行數相同。
###舉例
dbstop in main_running at 145
在程式碼的145行eval(funcName)暫停除錯,再執行eval(funcName);則可以出現導致error的原因,不然螢幕上只會出現error,沒有錯誤提示。