OpenCV 2.0 มีการอัพเกรดหลายๆอย่างรวมถึงเพิ่มความสามารถในการใช้ง่านร่วมกับ C++ และ Python ให้สะดวกยิ่งขึ้น แต่มีจุดเปลี่ยนแปลงเล็กน้อยคือ การติดตั้งเพื่อใช้งานบน Windows ไม่ตรงไปตรงมาเหมือนเวอร์ชั่นเก่า (<= 1.0) จึงอยากเอามาเขียนไว้กันลืมและน่าจะเป็นประโยชน์สำหรับคนที่อยากลองใช้งาน
จุดที่มีปัญหาคือใช้ตัวไลบารี (.lib) ที่ติดมากับตัวโปรแกรมจะไม่สามารถใช้งานร่วมกับ VC++ ได้ต้องทำการคอมไพล์เองโดยจะมีขั้นตอนต่างๆตามด้านล่างซึ่งแตกต่างและมีรายละเอียดเยอะกว่า Wiki ของ OpenCV พอสมควร สำหรับใครที่ทำตามแล้วมีปัญหาลองโพสคำถามทิ้งไว้ได้เลย
สิ่งที่ต้องการ
- OpenCV สำหรับ Windows
- CMake สำหรับ Windows
- Visual C++ Express 2008
- Windows XP หรือใหม่กว่า (ลองแล้วกับ XP และ Vista)
ขั้นตอนการติดตั้ง
0. การตั้งค่า System Setting (path และอื่นๆ)
1. ติดตั้งและทดสอบ Visual C++
- อ่านแล้วทำตามตัว Installer ไปเรื่อยๆ restart ตามคำบอก
- ทดสอบ Hello World (เปิด VC++ มาทำตามได้เลย)
- สร้างโปรเจคใหม่

- ตั้งค่าตามรูป

- ตั้งค่าต่อไป

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

- ไฟล์ main.cpp

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

1
2
3
4
5
6
7#include
int main(int argc, char* argv[])
{
std::cout << "Hello World\n";
return 0;
} - ผลที่ได้ (ลองบน Windows Vista ญี่ปุ่น) ถ้ามีอะไร ผิดพลาดหรือคอมไพล์ไม่ผ่านลองดูว่าพิมพ์หรืออะไรผิดขั้นตอนหรือไม่

2. ติดตั้งและทดสอบ OpenCV
- Install, next.. next... แล้วเลือกให้ add OpenCV to system path ด้วย

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

- ผลการทำงาน

3. ติดตั้งและทดสอบ CMake
- Install, next.. next... แล้วเลือกให้ add CMake to system path ด้วย

- ทดสอบใช้งาน CMake ด้วย VC++ console


4. คอมไพล์ OpenCV
- เปิด VC++ console

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

- แก้ไฟล์ CMakeLists.txt ใน c:\opencv2.0 ถ้าเป็น VC++ express 2008 เนื่องจาก CMake จะเช็คเวอร์ชันผิดแล้วจะตั้งค่าให้คอมไพล์แบบใช้ OpenMP ซึ่งมีใน VC++ แบบเสียตังเท่านั้นแต่ถ้าใช้ตัวเต็มอยู่แล้วก็ข้ามไปได้เลย
ที่บรรทัด 166 เปลี่ยน set(DEFAULT_ENABLE_OPENMP ON) เป็น set(DEFAULT_ENABLE_OPENMP OFF)
- สร้างไฟล์สำหรับใช้ในการคอมไพล์ด้วย CMake ตรงนี้ถ้าทำตาม Wiki ของ OpenCV จะได้เป็น debug โหมดออกมา (ยังไม่ได้หาสาเหตุ)
VC Express 2008: cmake -D CMAKE_BUILD_TYPE=RELEASE ..
VC 2005: cmake -D:CMAKE_BUILD_TYPE=RELEASE ..
- คอมไพล์ด้วย nmake (เหมือน make ของ gcc แต่เป็นของ VC++)
nmake
- รอไปเรื่อยๆจนถึง 100% (รอตามความแรง CPU)

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

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

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




Comments
ชุดคำสั่งที่ทำง านได้ดีขึ้นรึเป ล่านะ หรือไม่ต่าง ???
Linux กับ Windows binary มันใช้ด้วยกันไม ่ได้ ถ้าไม่ฝืน
PPC ARM x86 ก็ assembly ใช้ด้วยกันไม่ได ้
MSVC กับ Cygwin ก็มีวิธีการ link lib ไม่เหมือนกัน
และอีกมากมาย
จริงๆ มันใหญ่หนะ ทั้ง source ทั้ง bin, สู้เขียน cmake ให้ไป compile กันเอาเอง
ปล. มีใครรู้สึกมั่ง ว่า cmake บน linux มันใช้ง่ายกว่า windows มากๆ
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 มาโหลดตอนทำงาน
ผมทำขั้นตอนที่ 4 เเล้วมัน error อ่าคับ ไม่ทราบว่ามันเป นเพราะว่าอะไรคั บ
ปล. มันเกิดเพราะว่า ผมลงรอบ 2 รึเปล่าคับ เพราะรอบเเรกผมล งเเล้วมันไม่เจอ ไฟล์ OpenCV.sln อ่ะ ผมเลยลงใหม่อีกท ี เเต่ไปๆมาๆพอถึง ขั้นตอนที่ 4 มันฟ้อง error ขึ้นมาเลยอ่าคับ
RSS feed for comments to this post.