Showing posts with label opencv. Show all posts
Showing posts with label opencv. Show all posts

Sunday, April 11, 2010

把OpenCV的編譯器最佳化關掉

給未來的裕翔

編譯器是否最佳化是由參數決定

也就是寫在Makefile裡面

不過跑完./configure後

用find -name Makefile | wc -l

發現有16個Makefile

一個個改太白癡了

所以針對源頭configure檔

把裡面所有的-O2和-O3都換成-O0就好

ps: 終於可以不用在gdb的時候

看到一堆<value optimized out>了......

ps: 要檢查一個function 裡面有沒有變數是<value optimized out>

可以在gdb裡面用info local, 列出所有local變數

Saturday, March 20, 2010

OpenCV的sample執行出問題

給未來的裕翔

把ldd問題處理掉之後

執行facedetect會出現類似以下的錯誤訊息

OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /home/pison/programs/opencv/src/highgui/window.cpp, line 100
terminate called after throwing an instance of 'cv::Exception'
Aborted


依照建議安裝gtk2-devel套件

重新./configure, make, make install

重新執行facedetect, 耶~!

Wednesday, March 17, 2010

OpenCV需要librdf加速

給未來的裕翔

OpenCV的facedetect需要librdf加速

如果沒有安裝

會出現以下警告

Warning: Unable to create "trees" RDF storage.
Performance can be improved by upgrading librdf.


這個時候直接yum whatprovides librdf是找不到東西的

請別忘記, 平常講哪個library的時候, 是不會講後面的副檔名so的

所以真的要搜尋時

yum whatprovides */librdf.so

此時不只出現一個符合套件

不過只有一個套件所提供的librdf.so直接放在/usr/lib/下

redland-devel

就是它了!

後記: 裝是裝了, 也有把它加到makefile裡, 但好像變慢了?

Tuesday, March 16, 2010

阿~哈哈哈哈哈! OpenCV移植大成功!

給未來的裕翔

阿~哈哈哈哈哈!

讓我紀錄一下g++使用筆記

阿~哈哈哈哈哈!

複製OpenCV中文網裡面的人臉檢測程式碼
(不知為啥, 直接使用Opencv-2.0.0裡面的sample編譯會有錯)


OpenCV中文網:
http://www.opencv.org.cn/index.php/%E9%A6%96%E9%A1%B5


人臉檢測程式碼:
http://www.opencv.org.cn/index.php/%E4%BA%BA%E8%84%B8%E6%A3%80%E6%B5%8B


把它複製貼到facedetect.cpp檔裡去

此facedetect.cpp和之前找的其它cpp程式碼放在一起
(為了不使用已編譯好的so檔)


g++ -c *.c*
編譯所有的c或cpp成object檔, 它們需要的header檔之前已放在當下資料夾
(現在的我會嘗試用g++ -I指定include資料夾)


g++ -o facedetect *.o -L/usr/lib -lhighgui
把所有的object連結在一起成為facedetect執行檔
指定/usr/lib/libhighgui.so作為此執行檔動態函式庫


這樣編譯出來的執行檔

終於不會再讓圖歪歪的了!

阿~哈哈哈哈哈!

ps: /usr/lib裡面的so檔都取名為像是libxxx.so, libzzz.so這樣的形式

想以-L使用libxxx.so時, ex:
g++ (中略) -L/usr/lib/ -lxxx


兩個都要使用時, ex:
g++ (中略) -L/usr/lib/ -lxxx -lzzz


阿~哈哈哈哈哈!


OpenCV編譯成功!

給未來的裕翔

OpenCV-2.0.0編譯成功

當初失敗時的錯誤訊息是缺少 zopen, zclose這些東東

重新嘗試make前有先把原本的資料夾移除

然後對OpenCV的tarball解壓縮

tar -jxf OpenCV-2.0.0.tar.bz2

跟上次不同的是


這次有盡可能的安裝INSTALL檔案裡建議的"選擇性安裝"套件

像是: subversion, python, swig, ......

我推測, 成功的關鍵可能是因為這次有安裝zlib-devel

之前失敗的時候, 是在有zlib而沒zlib-devel的情況下

加上錯誤訊息和zopen, zclose有關

所以我如此推測

安裝好之後

以root權限make install, 因為要在/usr/lib裡面新增檔案

突然在想: 之前我亂嘗試放置的libhighgui.so

是被蓋過還是略過? 不知道 (好像獵人的推理)

所以我mv /usr/lib/libhighgui.so /usr/lib/libhighgui.so.bak

touch /usr/lib/libhighgui.so

原來的lighighgui.so是一個連結檔

而我製作的只是普通空檔案

再次make install之後

蓋過!

因此不用擔心之前的嘗試影響我的make install