1. 程式人生 > >cenOS 安裝opencv(for matlab)

cenOS 安裝opencv(for matlab)

一、CenOS安裝matlab R2017b

https://blog.csdn.net/u012222078/article/details/78673066
注:

二、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,沒有錯誤提示。