Posted by: sirivy | September 4, 2009

Installation OpenCV on Ubuntu 9.04

วันนี้ทำการลง 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 เพื่อดูผลลัพธ์ของโปรแกรม

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


Responses

  1. สวัสดีครับ พอดีเข้ามาอ่านในบอร์ด OpenCV ผมจะขอถามหน่อยครับ พอดีจะเอาไปทำโปรเจค ว่า OpenCV เขียนเป็นภาษา JAVA ได้ไหมครับ หรือเป็น C# ก็ได้ ขอขั้นตอนการติดตั้งครับ

    ขอบคุณเป็นอย่างสูง

    • ก่อนอื่นผมขอบอกตามตรงเลยว่าผมไม่เคยลองใช้เหมือนกันครับ OpenCV ที่เขียนเป็น JAVA แต่พอลองค้น ๆ ดูในกูเกิลเจอ JavaCV ครับเป็นเหมือน Java wrapper สำหรับ OpenCV วิธีการติดตั้งนั้น ตามลิงก์นี้ไปเลยครับ –> http://code.google.com/p/javacv/ แต่ผมว่าถ้ามีความรู้ JAVA กับ C# มาแล้วน่าจะเขียน C++ ได้ไม่ยากนะครับ : )


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: