
!!! Waring บทความนี้ทำตอนปลายปีที่แล้วทำให้่ซอฟแวร์บางตัวไม่อัพเดตนะครับการทำตามขอให้เปลี่ยนเป็นเวอร์ชั่นใหม่ๆทั้งหมดจะดีกว่าครับ
OpenCv & Computer Vision
ในปัจจุบัน Computer Vision ถือว่าเข้ามามีบทบาทในชีวิตประจำวันและ ในทางอุตสาหกรรมอย่างเลี่ยงไม่ได้ ตัวอย่างในการนำ Computer Vision ไปใช้ในปัจจุบันสามารถพบเห็นได้หลายหลายเช่น ระบบตรวจจับใบหน้า (face detection) ระบบจดจำใบหน้า (face recognize) ระบบการมองเห็นของหุ่นยนต์หรือเครื่องตรวจสอบอุปกรณ์วงจรรวม ในโรงงาน หรือแม้แต่บนสมาร์ทโฟนเป็นต้น
Image processing เป็นเรื่องที่นักพัฒนาหลายๆท่านรู้จักดี และก็คงทราบดีว่าการเขียนโปรแกรมเพื่อประมวลผลภาพเองทั้งหมดนั้นเป็นสิ่งที่ยุ่งยากขนาดไหน แล้วถ้าเราต้องทำงานทางด้านการประมวลผลภาพก็จำเป็นต้องมีเครื่องมือในการช่วยเหลือที่มีประสิทธิภาพ เครื่องมือที่สามารถช่วยเหลือ นักวิจัยและนักพัฒนาในการทำงานด้าน Computer Vision ได้นั้นมีอยู่หลายชนิดด้วยกัน แต่ในบทความนี้จะแนะนำ ไลบรารี่ที่ช่วยในการพัฒนาซอฟแวร์ที่มีประสิทธิภาพสูงตัวหนึ่ง
ไลบรารี่สำหรับการพัฒนาระบบ Computer Vision ถือว่ามีอยู่เยอะมากทั้งแบบที่ต้องซื้อ และแบบ OpenSource ในบทความนี้ จะนำเสนอวิธีเริ่มต้นการใช้ไลบรารี่ ชนิดหนึ่งในการพัฒนาระบบ computer vision ซึ่งก็คือ OpenCv
OpenCv คืออะไร
OpenCv เป็นซอฟแวร์ Open Source สำหรับ Computer vision library ภายในไลบรารี่ของ OpenCv จะถูกพัฒนาขึ้นมาจาก ภาษา C และ C++ OpenCv สามารถรันซอฟแวร์ภายใต้ระบบปฎิบัติการ Linux , Window หรือ MAC OsX และสามารถพัฒนาแอพพลิเคชั่นจาก OpenCv โดยการใช้ ภาษาอื่นที่ไม่ใช่ C หรือ C++ เช่น Python, Ruby, MATLAB หรือภาษาอื่นๆ ได้
Environment ในการพัฒนา
จากที่แนะนำมาว่า OpenCv สามารถรันได้ เกือบทุกระบบปฏิบัติการโดยสามารถโดยท่านสามารถเลือกระบบปฏิบัติการที่เหมาะสมกับงานของท่านได้เลย เช่นระบบปฏิบัติการ Window หรือว่า Linux
ใน บทความนี้จะขอนำเสนอการติดตั้งทั้ง ไลบรารี่ OpenCv บนระบบปฏิบัติการ Linux
How to Install OpenCv on Ubuntu
โดยระบบปฏิบัติการที่ใช้ทดลองคือ Ubunt 11.04 Lucid โดยท่านสามารถ ดาวโหลดได้จาก เว็บไซต์ http://www.ubuntu.com/ โดยตรงโดยในบทความนี้จะไม่ขอพูดถึงวิธีการติดตั้ง ระบบปฏิบัติการ Ubuntu นะครับ ท่านที่สนใจการติดตั้ง Ubuntu นี้สามารถทำได้โดยไม่ยากครับ
ในการติดตั้งจำเป็นต้องใช้ internet ในการดาวน์โหลดแพกเกตต่างๆ ขอให้ตรวจสอบการเชื่อมต่อ internet ก่อนติดตั้งด้วยนะครับ
- Open Terminal: Applications->Accessories->Terminal
- ติดตั้ง Cmake และ Requirements อื่นๆ ที่จำเป็นต้องใช้ในการติดตั้ง OpenCv
$ sudo apt–get update
$ sudo apt–get install build–essential cmake libgtk2.0–dev libtiff4–dev libjasper–dev libavformat–dev libswscale–dev libavcodec–dev libjpeg62–dev
- ดาวน์โหลด OpenCv Library โดยในตัวอย่างนี้ใช้ 2.3
$ cd Downloads
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3/OpenCV-2.3.0.tar.bz2
- Unpack Archive โฟลเดอร์ที่ได้ดาวน์โหลดเพื่อใช้ในการติดตั้ง
$ tar –xvf OpenCV–2.3.0.tar.bz2
$ cd OpenCV–2.3.0/
- สร้างโฟลเดอร์ขึ้นมาใหม่โดยไฟล์ที่ถูกสร้างขึ้นมาจาก Cmake จะถูกเก็บในโฟลเดอร์นี้
$ mkdir release
$ cd release
- ใช้ Cmake ในการสร้าง make file ขึ้นมา
$ cmake –D CMAKE_BUILD_TYPE=RELEASE –D CMAKE_INSTALL_PREFIX=/usr/local..
- คอมไพล์และติดตั้ง OpenCv
$ sudo make install
- ทำการกำหนด PATH ให้กับระบบไปที่ OpenCv ที่ติดตั้งโดยใน <PATH> คือ path ที่ใช้ในการติดตั้งบนเครื่องของท่านเอง
$ export LD_LIBRARY_PATH=<PATH>/OpenCV–2.3.0/release/lib:$LD_LIBRARY_PATH
$ sudo ldconfig
เมื่อถึงขั้นตอนนี้ท่านสามารถติดตั้งระบบ OpenCv ลงบนระบบปฏิบัติการ Ubuntu ได้เสร็จแล้ว
How to Install Qt
ในการพัฒนาระบบด้วยการใช้ OpenCv Library ท่านสามารถเลือกใช้ Editor ตัวไหนก็ได้ในการพัฒนาที่สามารถทำการเลือกไปที่ PATH ของ OpenCv ได้แต่ในการ เลือก Tool ในการพัฒนาขอให้คิดถึง Application ที่จะทำการพัฒนาด้วยเช่น ทาง Window เลือกใช้ Visual Studio เนื่องจากมีเครื่องมือในการอำนวยความสะดวกที่หลากหลายและสามารถทำให้ OpenCv ของท่านเชื่อมต่อกับไลบรารี่ต่างๆของ Microsoft ได้โดนง่าย
บทความนี้จะขอนำเสนอ tool ในการพัฒนาควบคู่กับ OpenCv คือ Qt โดยท่านสามารถศึกษาความสามารถเพิ่มเติมและทำการ ดาวน์โหลด ได้จาก http://qt.nokia.com/downloads
ในการดาวน์โหลด จะมีทั้งแบบ offline และ online ท่านสามารถเลือกดาวน์โหลดตัวไดตัวหนึ่งได้เลยครับเมื่อดาวโหลดมาแล้ววิธีการติดตั้ง Qt ก็ขอให้ทำการรัน ตัว Installer ด้วยคำสั่ง ./Qt_SDK_Lin32_offline_v1_1_2_en.run ได้เลย
หลังจากนั้นให้ท่านทำการกด Next และทำการติดตั้งตามปกติ
Add OpenCv lib to Qt Creator
ขอให้ท่านสร้างโปรเจคจาก Qt ขึ้นมาแล้วเลือกไปที่ .PRO เพื่อทำการใส่ PATH LIB ของ OpenCv ดังนี้
LIBS +=–lopencv_core –lopencv_imgproc –lopencv_highgui –lopencv_ml –lopencv_video –lopencv_features2d –lopencv_calib3d –lopencv_objdetect –lopencv_contrib –lopencv_legacy –lopencv_flann
หลังจากนั้นให้ท่านทดลอง
#include<opencv/cv.h>
#include<opencv/highgui.h>
ลงไปใน source file ของท่านถ้า QT ไม่มีการแจ้งเตือนว่าไม่พบและสามารถทำการคอมไพล์ได้(สามารถทดสอบได้จากโปรแกรมแรกของบทความ) ก็ถือว่าท่านทำการติดตั้งสำเร็จแล้ว
First Program Display Image
หลังจากที่ได้ Intsall OpenCv และจัดเตรียม Environment ของท่านแล้วขั้นตอนต่อมาจะเป็นการทดสอบโปรแกรมและทำความเข้าใจเรื่องพื้นฐานการทำงานของไลบรารี่
OpenCv ได้ทำการจัดเตรียม Library ในการอ่านค่าจากรูปภาพหรือว่า Video โดยการในการแสดงผลจะใช้ toolkits ที่รวมเข้ามาใน OpenCv ซึ่งก็คือ high gui ในการแสดงผล ในโปรแกรมแรกเราจะทำการ เขียนโปรแกรมเพื่อเปิด รูปภาพและแสดงบน screen ของ highgui toolkits ของ OpenCv
#include<opencv/cv.h>
#include<opencv/highgui.h>
int main( int argc, char** argv ) {
IplImage* img = cvLoadImage( “linux.jpg” );
cvNamedWindow(“OpenCv 1”, CV_WINDOW_AUTOSIZE );
cvShowImage(“OpenCv 1”, img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow(“OpenCv 1”);
}
เมื่อทำการ รันโปรแกรมโปรแกรมจะทำการโหลดรูป linux.jpg ที่อยู่ในไดเรคทอรี่เดียวกันเข้าไปไว้ใน memory แล้วแสดงผลลงบนหน้าจอ หลังจากนั้นจะรอผู้ใช้ทำการกด key แล้วจึงจบโปรแกรม
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local.. มีปัญหาทำต่อไม่ได้
/usr/local.. ไม่รู้ต้องพิมพ์อะไรต่อค่ะ รบกวนตอบกลับด้วยขอบคุณค่ะ
ต้องใช้อันนี้ครับ
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
คำสั่งนี้พอใช้แล้วมันขึ้น error ครับ
มันฟ้องว่า Parse error incommand line argument: -D
should be: VAR type=value
CMake Error: No camke script provided.
Cmake Error: Problem processing arguments. aborting.
แก้ยังไงดีครับ
ต้องขอโทษด้วยนะครับ ข้างบนผมผิดเอง
จริงๆแล้ว error ฟ้องว่า
CMake Error: The source directory “/home/ชื่อuser” does not appear to contain CMakelists.txt
แก้ยังไงดีครับ
$ mkdir release
$ cd release
ทำตามขั้นตอนนี้หรือยังครับ
ผมแอด path ไม่ได้นะครับใช้ openCv2.4.1
INCLUDEPATH += /home/win/Downloads/OpenCV-2.4.1/include/opencv
INCLUDEPATH += /home/win/Downloads/OpenCV-2.4.1/include/opencv2
LIBS += -L/usr/local/lib
LIBS +=-lopencv_calib3d
LIBS +=-lopencv_contrib
LIBS +=-lopencv_core
LIBS +=-lopencv_features2d
LIBS +=-lopencv_flann
LIBS +=-lopencv_gpu
LIBS +=-lopencv_highgui
LIBS +=-lopencv_imgproc
LIBS +=-lopencv_legacy
LIBS +=-lopencv_ml
LIBS +=-lopencv_nonfree
LIBS +=-lopencv_objdetect
LIBS +=-lopencv_photo
LIBS +=-lopencv_stitching
LIBS +=-lopencv_ts
LIBS +=-lopencv_video
LIBS +=-lopencv_videostab
SOURCES += \
main.cpp
มันคอมไฟล์ไม่ได้ครับ
error อย่างนี้ครับ
21:53:18: Running build steps for project project…
21:53:18: Configuration unchanged, skipping qmake step.
21:53:18: Starting: “/usr/bin/make” -w
make: Entering directory `/opt/QtSDK/project-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK__Release’
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../Desktop/Qt/4.8.1/gcc/mkspecs/linux-g++ -I../project -I../Desktop/Qt/4.8.1/gcc/include/QtCore -I../Desktop/Qt/4.8.1/gcc/include/QtGui -I../Desktop/Qt/4.8.1/gcc/include -I/home/win/Downloads/OpenCV-2.4.1/include/opencv -I/home/win/Downloads/OpenCV-2.4.1/include/opencv2 -I. -I../project -I. -o main.o ../project/main.cpp
../project/main.cpp:8:1: error: stray ‘\342’ in program
ที่อยู่ไฟล์ครับ
usr>local>lib จะมีไฟล์นี้ครับ
libopencv_calib3d.so
libopencv_contrib.so
libopencv_core.so
libopencv_features2d.so
libopencv_flann.so
libopencv_gpu.so
libopencv_highgui.so
libopencv_imgproc.so
libopencv_legacy.so
libopencv_ml.so
libopencv_nonfree.so
libopencv_objdetect.so
libopencv_photo.so
libopencv_stitching.so
libopencv_video.so
libopencv_videostab.so
usr>local>include จะมีไฟล์
cv.h, cv.hpp, cvaux.h, cvaux.hpp, cvwimage.h, cxcore.h, cxcore.hpp, cxeigen.h, cxmisc.h, highui.h, ml.h
home/win/Downloads/OpecCV-2.4.1/include/opencv ก็มีไฟล์
cv.h, cv.hpp, cvaux.h, cvaux.hpp, cvwimage.h, cxcore.h, cxcore.hpp, cxeigen.h, cxmisc.h, highui.h, ml.h
home/win/Downloads/OpecCV-2.4.1/include/opencv2 จะมี opencv.hpp ครับ
home/win/Downloads/OpecCV-2.4.1/build/lib ก็มีไฟล์
libopencv_calib3d.so
libopencv_contrib.so
libopencv_core.so
libopencv_features2d.so
libopencv_flann.so
libopencv_gpu.so
libopencv_highgui.so
libopencv_imgproc.so
libopencv_legacy.so
libopencv_ml.so
libopencv_nonfree.so
libopencv_objdetect.so
libopencv_photo.so
libopencv_stitching.so
libopencv_video.so
libopencv_videostab.so