!!! 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 ก่อนติดตั้งด้วยนะครับ
  1. Open Terminal: Applications->Accessories->Terminal
  2. ติดตั้ง Cmake และ Requirements อื่นๆ ที่จำเป็นต้องใช้ในการติดตั้ง OpenCv
$ sudo aptget update
$ sudo aptget install buildessential cmake libgtk2.0dev libtiff4dev libjasperdev libavformatdev libswscaledev libavcodecdev libjpeg62dev

  1. ดาวน์โหลด OpenCv Library โดยในตัวอย่างนี้ใช้ 2.3 
$ cd Downloads
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3/OpenCV-2.3.0.tar.bz2

  1. Unpack Archive โฟลเดอร์ที่ได้ดาวน์โหลดเพื่อใช้ในการติดตั้ง
$ tar xvf OpenCV2.3.0.tar.bz2
$ cd OpenCV2.3.0/

  1. สร้างโฟลเดอร์ขึ้นมาใหม่โดยไฟล์ที่ถูกสร้างขึ้นมาจาก Cmake จะถูกเก็บในโฟลเดอร์นี้
$ mkdir release
$ cd release

  1. ใช้ Cmake ในการสร้าง make file ขึ้นมา
$ cmake D CMAKE_BUILD_TYPE=RELEASE D CMAKE_INSTALL_PREFIX=/usr/local..
  1. คอมไพล์และติดตั้ง OpenCv
$ sudo make install
  1. ทำการกำหนด PATH ให้กับระบบไปที่ OpenCv ที่ติดตั้งโดยใน <PATH> คือ path ที่ใช้ในการติดตั้งบนเครื่องของท่านเอง
$ export LD_LIBRARY_PATH=<PATH>/OpenCV2.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 แล้วจึงจบโปรแกรม