วันพฤหัสบดีที่ 10 มีนาคม พ.ศ. 2554

ลง opencv 1

วันนี้ทำการลง openCV ใหม่หลังจากลงอุบุนตุใหม่ ประกอบกับจำไม่ได้ว่า ครั้งก่อนลงไปแล้วไม่ได้จดวิธีลงไว้ ลงอีกครั้งเลยขอจดไว้ก่อน เผื่อคราวหน้า ลงอุบุนตุใหม่จะได้ไม่มานั่งงมอีก

อ้างอิงการลง openCV บน Ubuntu 9.04 จาก

http://webeng.cs.ait.ac.th/cvwiki/opencv:tutorial:install:ubuntu

(Thanks อ.แมท(Dr.Matthew@AIT)for very useful installation guide)
ซึ่งมีขั้นตอนดังนี้

1. ใช้ synaptic ติดตั้ง libgstreamer0.10-dev และ libdc1394-13-dev
2. ดาวน์โหลด opencv 1.1.0 ได้จาก openCV wiki
3. แตกไฟล์ opencv-1.1pre1.tar.gz โดยใช้คำสั่ง tar -xvfz opencv-1.1pre1.tar.gz
4. ในไดเรกทอรี่ของ opencv-1.1.0 พิมพ์คำสั่ง(ให้เหมือนอันนี้เลยนะ เครื่องหมาย=พิมพ์ให้ติดprefix)
./configure –prefix=${HOME}/opencv –without-xine –without-quicktime –with-gstreamer –with-1394libs –with-v4l
5. ในไดเรกทอรี่ของ opencv-1.1.0 พิมพ์คำสั่ง
make
6. เมื่อ make เสร็จ ก็พิมพ์
make install
เพื่อติดตั้ง opencv ได้เลยโดย opencv จะไปติดตั้งอยู่ที่ /home/jednipat/opencv ตามไดเรคทอรี่ที่ระบุไว้ตอนรัน ./configure
7. พิมพ์
export LD_LIBRARY_PATH=/home/jednipat/opencv/lib

เมื่อ make install เสร็จ ก็ลองมารัน example ที่ opnecv ให้มาโดยคอมไพล์ดังนี้

g++ -o outputname yourfilename.c -I /home/jednipat/opencv/include/opencv/ -lhighgui -L /home/jednipat/opencv/lib/

กรณีของผมคอมไพล์ผ่านแต่พอรันแล้ว เจอ error ดังนี้ (เนื่องจากผมลืมทำข้อ 7)

error while loading shared libraries: libhighgui.so.2: cannot open
shared object file: No such file or directory

เลยค้นวิธีแก้ได้มาจากบล็อกของ dsin (พี่พง) สาเหตุเป็นเพราะว่ายังไม่ได้ export LD_LIBRARY_PATH ซึ่งก็ทำได้ดังนี้

export LD_LIBRARY_PATH=/home/jednipat/opencv/lib

จากนั้นทำการเปิดไฟล์ .bashrc ขึ้นมาแล้วเพิ่มบรรทัดนี้เข้าไปในไฟล์ .bashrc แล้วก็ทำการ save (พิมพ์ gedit .bashrc ใน home directory เพื่อทำการแก้ไขไฟล์ .bashrc เพราะจะได้ไม่ต้องมานั่งพิมพ์ export ทุกครั้งไปที่จะใช้งาน )

ที่นี้คิดว่าน่าจะรันได้ตามปกติ ลองคอมไพล์และรัน example ดูอีกที คอมไพล์ผ่าน
แต่พอรันปุ๊ป เจอกับ

OpenCV ERROR: Unspecified error (The function is not implemented.
Rebuild the library with Windows, GTK+ 2.x or Carbon support)
in function cvNamedWindow, window.cpp(71)
Terminating the application…
Segmentation fault

อ๊ากก… ค้นไปค้นมาอีกก็ได้คำแนะนำจากเว็บนี้ < – - คลิก คอมเมนต์สุดท้ายบอกไว้ว่าสาเหตุมาจากตอนรัน ./configure และ make ไม่มี gtk+ lib dev ไม่มีเขาแนะนำให้ remove openCV ออกก่อน แล้วไปลง libgtk2.0-dev (เข้า synaptic package manager แล้ว search คำว่า libgtk2.0-dev ละก็ mark for installation - > apply )

เมื่อลง libgtk2.0-dev เสร็จให้ uninstall openCV ก่อนโดยพิมพ์ make uninstall
ในไดเรคทอรี่ opencv-1.1.0 จากนั้นเพื่อความชัวร์ควรจะ restart เครื่องก่อน
(ผมไม่รีสตาร์ทเครื่อง make ใหม่ก็เจอปัญหาเดิม เลยลอง รีสตาร์ทเครื่อง แล้วทำใหม่)

แล้วทำการ ./configure , make , make install อีกที

1> ./configure blablabla..
2> make
3> make install
4> export LD_LIBRARY_PATH=/home/jednipat/opencv/lib

จากนั้นไปยัง directory /home/jednipat/opencv-1.1.0/samples/c
แล้วลองคอมไพล์ไฟล์ใด ๆ ผมเลือกไฟล์ตัวอย่างการใช้งาน SURF descriptor
ชื่อไฟล์ว่า find_obj.cpp คอมไพล์ด้วยคำสั่งดังนี้

g++ find_obj.cpp -o test -I /home/jednipat/opencv/include/opencv/ -lhighgui
-L /home/jednipat/opencv/lib/

จากนั้นรัน ./test เพื่อดูผลลัพธ์ของโปรแกรม

เย้… สำเร็จ..

ไม่มีความคิดเห็น:

แสดงความคิดเห็น