Wednesday, April 14, 2010

Using OpenCV in Visual Studio 2008 with EmguCV

เมื่อวานนั่งลองเขียนโปรแกรม OpenCV บน VS 2008 ดู ให้อารมณ์เหมือนเขียนโปรแกรมบนดอสสมัยก่อนเลย ปุ่มไม่มีคอนโทรลไม่มีให้.. เลยตัดสินใจว่าจะเขียนเป็น windows app เสียหน่อย  ตอนแรกตั้งใจจะเขียนเป็น Visual C++/CLI (C++ version ของ Microsoft ที่ support .NET และ native app) แต่ตัดสินใจหา Google ก่อนปรากฏว่าเจอโปรเจกต์ emguCV ที่เป็น wrapper สามารถเรียกใช้ OpenCV library โดยใช้ C# ได้เลย เลยรอดตัวไม่ต้องใช้ C++/CLI

สรุปวิธีการติดตั้งนะครับ

  1. เนื่องจากโปรแกรมนี้ใช้ WCF (Windows Communication Foundation) ต้องลง .NET 3.0 ก่อน
  2. โหลดตัว install ที่นี่ได้เลย http://sourceforge.net/project/showfiles.php?group_id=216500
  3. install ไปตามขั้นตอนปกติ อาจจะให้อัพเกรดอะไรนิดหน่อย.
  4. เปิด VS 2008 แล้วเปิดโซลูชัน Emgu.CV.Example.sln แล้วลองรันดู ตามขั้นตอนปกติควรจะรันโปรแกรมทดสอบผ่าน
โปรแกรมตัวอย่างที่ให้มาก็มี application เยอะอยู่ พอจะนำไปประยุกต์ใช้ได้หลายงานเลย หลังจากนั้นลองมาสร้าง project ใหม่ดู

  1. สร้าง project หรือ solution ใหม่
  2. add zlib.net.dll, Emgu.Utils.dll, Emgu.CV.dll ใน reference ของ project
  3. copy dll ของ OpenCV(cvXXX.dll, cvauxXXX.dll, cxcoreXXX.dll, highguiXXX.dll, opencv_ffmpegXXX.dll, mlXXX.dll and cvextern.dll) ไปไว้ใน execute directory (ขั้นตอนนี้ส่วนตัวไม่ได้ทำ รันผ่านด้วย)
  4. เขียนโปรแกรมตามปกติโดยใส่ namespace เหล่านี้ไปด้วย
          using Emgu.CV;
          using Emgu.CV.Structure;


เท่านี้ก็น่าจะเริ่มเขียน OpenCV ด้วย C# บน VS2008 ได้แล้ว

ลองดู tutorial เพิ่มเติมได้ที่
http://www.emgu.com/wiki/index.php/Tutorial

3 comments:

  1. พอดีตัวอย่าง โค๊ต ไหมครับ เอาแค่ โชว์รูปก็พอครับ ผมยัง งงๆหลังจาก

    เขียนโปรแกรมตามปกติโดยใส่ namespace เหล่านี้ไปด้วย
    using Emgu.CV;
    using Emgu.CV.Structure;
    แล้วต่อจากเนี้ยครับทำยังไงต่อ ขอตัวอย่างโค๊ตเป็นแนวทางหน่อยครับ แค่เขียนโชว์ก็พอ ผมงงว่าจะประกาศใช้ฟังก์ชั่น opercv ยัง ในตัวโปรแกรม

    ReplyDelete
  2. เมล์ผมครับ put_pk_love@hotmail.com กำลังโปรเจ็คครับ รบกวนด้วยนะครับ

    ReplyDelete
  3. ขอบคุณนะครับ กะัลังหาอยู่เลย ใน emgu cv ผมโคตรงงอ่า

    ReplyDelete