Creating an OpenCV application with Eclipse on Windows

Posted by Undermine on 18:45


เนื่องจากว่าผมใช้ระบบ Windows เป็นหลัก แต่งานวิจัยผมพัฒนาบน Ubuntu ซึ่งยังยอมรับว่าไม่สามารถใช้ Ubuntu เพียวๆ ได้ เป็นเหตุทำให้งานวิจัยค่อนข้างล่าช้าไปพอสมควร ผมจึงคิดว่าจะมาเขียนโปรแกรมบน Windows แทน และวันนี้ได้ลองผิดลองถูกที่จะใช้ OpenCV กับ Eclipse อยู่นานมาก ขอจดขั้นตอนเก็บไว้หน่อยละกัน
โปรแกรมที่จำเป็นต้องติดตั้ง
  1. MinGW: เป็นชุดคำสั่งรวมพวกไลบรารี่ของภาษา Programming ซึ่งในที่นี้โปรแกรมที่จะติดตั้งก็คือ C/C++ compiler
  2. Eclipse CDT: ดั้งเดิมเป็น IDE สำหรับภาษา Java แต่ตัวนี้ได้ติดตั้งโปรแกรมเสริมให้รองรับการพัฒนาภาษา C/C++
  3. OpenCV for Windows: และแน่นอนที่ขาดไม่ได้ นั่นก็คือ OpenCV ซึ่งเป็นชุดคำสั่งรวมพวกไลบรารี่ของการพัฒนาโปรแกรมทาง Computer Vision หรือ Image Processing
พอติดตั้งครบทั้ง 3 โปรแกรม ขั้นตอนต่อไปสำหรับการเริ่มต้นสร้างโปรแกรมขึ้นมา 1 โปรแกรมมีดังต่อไปนี้
  1. เปิด Eclipse ขึ้นมา
  2. สร้างโปรเจคขึ้นมา โดยไปที่แทบ File > New > C++ Project
  3. จากขั้นตอนที่ 2 เราจะได้ดังรูปข้างล่างนี้opencv-with-eclipse-win-01
    ตรงส่วน Toolchains นั้นให้เราเลือก MinGW GCC
  4. เมื่อเราสร้าง Project เสร็จแล้ว ให้ไปที่แทบ Project > Properties แล้วไปที่ C/C++ Build > Settings จะได้ดังรูปข้างล่างนี้opencv-with-eclipse-win-02
  5. แล้วให้ตั้งค่า Directories ของ GCC C++ Compiler ดังรูปข้างล่างนี้
  6. opencv-with-eclipse-win-03
  7. พอเสร็จแล้วให้ไปตั้งค่า Libraries ของ MinGW C++ Linker ดังรูปข้างล่างนี้
  8. opencv-with-eclipse-win-04
  9. ขั้นตอนสุดท้ายที่เราจะเป็นต้องทำก็คือไปเพิ่ม OpenCV ใน Path Environment ของ Windows ดังรูปข้างล่างนี้opencv-with-eclipse-win-05
  10. หลังจากนั้นให้ restart โปรแกรม Eclipse ก็เป็นอันเสร็จสิ้น
ส่วนโค้ดข้างล่างนี้เอาไว้สำหรับทดสอบครับ (อย่าลืม include ไฟล์ cv.h, cvaux.h, cxcore.h, และ highgui.h ไปด้วย)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main( void ) {
  IplImage *img = cvLoadImage( ..image file.. );
  if( !img ) {
    printf( "Could not load image file\n" );
    exit( 0 );
  }
 
  // create a window
  cvNamedWindow( "mainWin", CV_WINDOW_AUTOSIZE );
  cvMoveWindow( "mainWin", 100, 100 );
 
  // show the image
  cvShowImage( "mainWin", img );
 
  // wait for a key
  cvWaitKey( 0 );
 
  // release the image
  cvReleaseImage( &img );
 
  return 0;
}

0 comments:

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