最近在學習模式識別,需要用到opencv進行圖像視頻的處理,用yum安裝的opencv。在《opencv中文參考手冊2010年.pdf》中編譯源代碼的命令是
g++ hello-world.cpp -o hello-world -I /usr/local/include/opencv -L /usr/local/lib -lm -lcv -lhighgui -lcvaux
照抄下來,發現不能找到這里lib。用g++ `pkg-config opencv --libs --cflags opencv` hello-world.cpp -o hello-world是可以正常編譯和執行的。
到/usr/local/lib中沒有任何lib,因為是yum安裝的,不知道lib文件放在哪。到/usr/lib/中也沒找到。
想試一試上面第一條執行命令,根據pkg-config到/usr/lib/pkg-config/下cat opencv.pc可以看到opencv的lib確實在/usr/lib/中。於是去/usr/lib中一個一個的找highgui,發現很多文件找起來會很麻煩,於是把所有文件名<到一個txt文件再查找(很不專業的樣子,應該有grep;菜鳥嘛)。發現有帶opencv字樣的文件名。原來剛開始在/usr/lib/中沒有找到是因為我以為opencv的lib文件會是cvaux等等開頭的。然后改一下第一條命令,正常編譯鏈接。
g++ cvimg.cpp -o cvimg -I /usr/include/opencv/ -L /usr/lib/ -lm -lopencv_highgui
不過在源文件中引用了cv.h,鏈接的時候也是只需要鏈接 'libopencv_highgui.so'這個文件。