Thairobotics - Make the Real Things

การใช้งาน OpenCV 2.0 [ติดตั้งบน Windows]

อีเมล พิมพ์
User Rating: / 1
แย่ดีที่สุด 

OpenCV 2.0 มีการอัพเกรดหลายๆอย่างรวมถึงเพิ่มความสามารถในการใช้ง่านร่วมกับ C++ และ Python ให้สะดวกยิ่งขึ้น แต่มีจุดเปลี่ยนแปลงเล็กน้อยคือ การติดตั้งเพื่อใช้งานบน Windows ไม่ตรงไปตรงมาเหมือนเวอร์ชั่นเก่า (<= 1.0) จึงอยากเอามาเขียนไว้กันลืมและน่าจะเป็นประโยชน์สำหรับคนที่อยากลองใช้งาน

จุดที่มีปัญหาคือใช้ตัวไลบารี (.lib) ที่ติดมากับตัวโปรแกรมจะไม่สามารถใช้งานร่วมกับ VC++ ได้ต้องทำการคอมไพล์เองโดยจะมีขั้นตอนต่างๆตามด้านล่างซึ่งแตกต่างและมีรายละเอียดเยอะกว่า Wiki ของ OpenCV พอสมควร สำหรับใครที่ทำตามแล้วมีปัญหาลองโพสคำถามทิ้งไว้ได้เลย

สิ่งที่ต้องการ

  1. OpenCV สำหรับ Windows
  2. CMake สำหรับ Windows
  3. Visual C++ Express 2008
  4. Windows XP หรือใหม่กว่า (ลองแล้วกับ XP และ Vista)

ขั้นตอนการติดตั้ง

0. การตั้งค่า System Setting (path และอื่นๆ)

  1. Windows XP
  2. Windows Vista, 7

1. ติดตั้งและทดสอบ Visual C++

  1. อ่านแล้วทำตามตัว Installer ไปเรื่อยๆ restart ตามคำบอก
  2. ทดสอบ Hello World (เปิด VC++ มาทำตามได้เลย)
  3. สร้างโปรเจคใหม่
    vc001

  4. ตั้งค่าตามรูป
    vc002

  5. ตั้งค่าต่อไป
    vc003

  6. เพิ่มไฟล์เข้าไปในโปรเจค
    vc004

  7. ไฟล์ main.cpp
    vc005

  8. เขียนโค้ด (อยากให้สีสวยๆทำตามนี้เลย)
    vc006

    1
    2
    3
    4
    5
    6
    7
    #include 
     
    int main(int argc, char* argv[])
    {
    std::cout << "Hello World\n";
    return 0;
    }

  9. ผลที่ได้ (ลองบน Windows Vista ญี่ปุ่น) ถ้ามีอะไร ผิดพลาดหรือคอมไพล์ไม่ผ่านลองดูว่าพิมพ์หรืออะไรผิดขั้นตอนหรือไม่
    vc008

2. ติดตั้งและทดสอบ OpenCV

  1. Install, next.. next... แล้วเลือกให้ add OpenCV to system path ด้วย
    setup01

  2. เลือกค่า default ทั้งหมด (เลือกให้ติดตั้งซอสโค้ดด้วย)
  3. ทดลองรันโปรแกรมตัวอย่าง

    setup02

    setup03

  4. ผลการทำงาน
    setup04

3. ติดตั้งและทดสอบ CMake

  1. Install, next.. next... แล้วเลือกให้ add CMake to system path ด้วย
    setup05
  2. ทดสอบใช้งาน CMake ด้วย VC++ console
    setup06

    setup07

4. คอมไพล์ OpenCV

  1. เปิด VC++ console
    setup06

  2. ทำตามรูป (เครื่องหมาย¥คือ \ ใน Windows ญี่ปุ่น)
    compile01

  3. แก้ไฟล์ CMakeLists.txt ใน c:\opencv2.0 ถ้าเป็น VC++ express 2008 เนื่องจาก CMake จะเช็คเวอร์ชันผิดแล้วจะตั้งค่าให้คอมไพล์แบบใช้ OpenMP ซึ่งมีใน VC++ แบบเสียตังเท่านั้นแต่ถ้าใช้ตัวเต็มอยู่แล้วก็ข้ามไปได้เลย

    ที่บรรทัด 166 เปลี่ยน set(DEFAULT_ENABLE_OPENMP ON) เป็น set(DEFAULT_ENABLE_OPENMP OFF)
    compile07
  4. สร้างไฟล์สำหรับใช้ในการคอมไพล์ด้วย CMake ตรงนี้ถ้าทำตาม Wiki ของ OpenCV จะได้เป็น debug โหมดออกมา (ยังไม่ได้หาสาเหตุ)
    VC Express 2008: cmake -D CMAKE_BUILD_TYPE=RELEASE ..
    VC 2005: cmake -D:CMAKE_BUILD_TYPE=RELEASE ..
    compile09

  5. คอมไพล์ด้วย nmake (เหมือน make ของ gcc แต่เป็นของ VC++)
    nmake
    compile10

  6. รอไปเรื่อยๆจนถึง 100% (รอตามความแรง CPU)
    compile11

  7. ตั้งค่า System Path (ดูหัวข้อ 0) โดยเพิ่ม C:\OpenCV2.0\release\bin เข้าไปใน Path แล้วปิดเปิด VC++ console ใหม่
    compile13

  8. ทดสอบโดยการ run cxcoretest.exe จาก C:\OpenCV2.0\release\bin
    compile12

ถ้า cxcoretest.exe สามารถทำงานได้ก็แปลว่าทุกอย่างทำงานได้อย่างที่ควรจะเป็น ตอนหน้าจะเป็นการ setup ตัว VC++ เพื่อใช้งาน OpenCV ร่วมกับ HighGUI โดยใช้ภาพจากกล้องหรือไฟล์วีดิโอ

 

บทความที่เกี่ยวข้อง


แก้ไขล่าสุด ( วันพุธที่ 10 มีนาคม 2010 เวลา 09:35 น. )  

Comments  

 
0 #1 P.Virie 2010-03-03 06:09
ยังดีกว่า CGAL lib, ใช้ cmake สร้าง project แล้ว complie lib ออกมาเหมือนกัน แล้วพบว่า lib มันเขียนผิด อยากจะบ้า (function intersection polygon_wh กับ polygon)
Quote
 
 
0 #2 Newbiess 2010-03-05 22:42
สาเหตุทีต้องคอม ไพล์ใหม่ตามแต่ล ะ platform เพื่อต้องการให้ ได้
ชุดคำสั่งที่ทำง านได้ดีขึ้นรึเป ล่านะ หรือไม่ต่าง ???
Quote
 
 
0 #3 mahisorn 2010-03-06 08:28
อันนี้แน่นอนปะ
Linux กับ Windows binary มันใช้ด้วยกันไม ่ได้ ถ้าไม่ฝืน

PPC ARM x86 ก็ assembly ใช้ด้วยกันไม่ได

MSVC กับ Cygwin ก็มีวิธีการ link lib ไม่เหมือนกัน

และอีกมากมาย
Quote
 
 
0 #4 theeraphol 2010-03-06 09:49
แล้วทำไมต้องมา compile เองด้วยละครับ ทำไมไม่ทำเป็น binary แยกแต่ละ platform ไปเลย หรือคนทำขี้เกีย จ เบื่อการ compile มากเหนื่อยและเส ียเวลา
Quote
 
 
0 #5 P.Virie 2010-03-07 21:53
คือคนเขียน lib มันอยากเท่ห์หน่ ะ ไม่มีไรหรอก




จริงๆ มันใหญ่หนะ ทั้ง source ทั้ง bin, สู้เขียน cmake ให้ไป compile กันเอาเอง

ปล. มีใครรู้สึกมั่ง ว่า cmake บน linux มันใช้ง่ายกว่า windows มากๆ
Quote
 
 
0 #6 wrn 2010-03-10 20:48
I wander that when you add path of "CV/release/bin"
then, do the program confuse which dll to use ?
(of course , it may use the first one that it found, but then programmer like us may get confused)

there are the original of the path in "CV/bin"
which have the same dll in that folder
Then, I think the "CV/bin" should be removed from the path when you add the "CV/release/bin"

Am I correct?
Quote
 
 
0 #7 mahisorn 2010-03-11 11:49
Quoting wrn:
I wander that when you add path of "CV/release/bin"
then, do the program confuse which dll to use ?
(of course , it may use the first one that it found, but then programmer like us may get confused)

there are the original of the path in "CV/bin"
which have the same dll in that folder
Then, I think the "CV/bin" should be removed from the path when you add the "CV/release/bin"

Am I correct?


มันถ้ามันชื่อเห มือนกันเลยก็จะเ ลือกใช้ตามอันที ่เจอก่อนถ้าเป็น compiler เดี่ยวกันอาจจะไ ม่มีปัญหา แต่ที่ถูกต้องก็ ต้องทำแบบที่บอก คือเอาที่ไม่ได้ ใช้ออกก่อน หรือไม่ก็ตั้งชื ่อใช้แตกต่างกัน แต่ยังไม่ได้เขี ยนต่อ

จริงๆแล้ว lib ของแต่ละโปรแกรม มันจะมีชื่อ dll ที่เป็นของมันเอ งแอบอยู่ข้างใน (เอา hexeditor มาหาดูจะเห็นว่า ใช้ dll ตัวไหน) แล้วเวลาโปรแกรม ใน windows ทำงานมันจะหา dll จากตำแหน่งที่อย ู่ใน system path มาโหลดตอนทำงาน
Quote
 
 
0 #8 jibjibjaung 2010-07-08 20:50
ถามหน่อยคับ

ผมทำขั้นตอนที่ 4 เเล้วมัน error อ่าคับ ไม่ทราบว่ามันเป นเพราะว่าอะไรคั

ปล. มันเกิดเพราะว่า ผมลงรอบ 2 รึเปล่าคับ เพราะรอบเเรกผมล งเเล้วมันไม่เจอ ไฟล์ OpenCV.sln อ่ะ ผมเลยลงใหม่อีกท ี เเต่ไปๆมาๆพอถึง ขั้นตอนที่ 4 มันฟ้อง error ขึ้นมาเลยอ่าคับ
Quote
 

Add comment


Security code
Refresh

จดหมายข่าว

กรุณากรอกอีเมล์เพื่อรับ/ยกเลิกข่าวอัพเดทต่างๆ

ขับเคลื่อนโดย Joomla!. Valid XHTML and CSS.