เขียนโปรแกรมติดต่อกับกล้อง


      การเขียนโปรแกรมติดต่อกับกล้อง webcam ใน emguCV ทำได้ไม่ยากเลยครับ เพราะสิ่งเหล่านี้เป็นสิ่งพื้นฐานที่เหล่านักพัฒนาซอฟแวร์ในด้าน computer vision จำเป็นจะต้องรู้มากๆ เพราะการจะได้ภาพ input เพื่อนำไปประมวลผลต่อนั้นทำได้อยู่ 2 ทาง คือ ได้จากภาพนิ่งธรรมดา และ ได้จากภาพวีดีโอ เอาหล่ะครับ เรามาเข้าเรื่องของเราเลยดีกว่าครับ


  1. เปิดโปรแกรม visual studio และ New Project พร้อมกับเซตค่าต่างๆ ของไลบราลี่ emguCV ให้เรียบร้อยนะครับ (อ่านวิธีทำได้ที่นี้  เริ่มทำจากข้อ 4 ถึงข้อ 6 นะครับ ) เมื่อเสร็จแล้วจะได้หน้าตาแบบนี้นะครับ

  2. ขยาย Form1 ให้มีขนาดที่ต้องการ จากนั้นไปที่แถบเครื่องมือ(Toolbox) ด้านซ้ายมือให้ลาก pictureBox มาวางใน Form 1 พร้อมตั้งชื่อเป็น (Name):  pbShowCamera


  3. ลากปุ่ม(Button) มาใส่ 2 ปุ่มครับ โดยให้ตั้งชื่อ (Name) ตามภาพนะครับ


  4. ลาก Timer จาก ToolBox มาไว้ใน Form ดับเบิ้ลคลิ๊กที่ปุ่ม Capture ! , Stop ! และ รูปtimer1 ใส่โค๊ดดังภาพ


  5. กลับไปที่หน้า Design ดับเบิ้ลคลิ๊กที่ form นะครับ แล้วใส่โค๊ดดังภาพ

  6. กลับไปที่  private void process() นะครับ ใส่โค๊ดตามนี้นะครับ

  7. ลองกดรัน(F5) จะได้ผลตามภาพนะครับ


  8. ติดปัญหาหรือมีข้อสงสัยอะไรก็ถามได้นะครับ

12 ความคิดเห็น

February 2, 2013 at 4:48 PM
This comment has been removed by the author.
Reply
February 6, 2013 at 2:34 PM

An unhandled exception of type 'System.NullReferenceException' occurred in...


มันขึ้นแบบนี้น่ะครับ

Reply
Anonymous
February 16, 2013 at 7:03 PM

@Zerofreedom Peerapat
ลอง disable อุปกรณ์ Sound, video and game controllers ใน Device Meneger ที่ไม่เกี่ยวข้องดูครับ
เพราะเครื่องคุณอาจจะ detect อุปกรณ์อื่นที่ไม่ใช่ webcam

Reply
Anonymous
April 9, 2013 at 10:20 AM

http://www.uppic.org/image-D510_51638854.jpg

มันขึ้นมาแบบนี้ครับท่าน ไม่ทราบต้องแก้ไขยังไง ตรงไหนครับผม ^_^

Reply
April 11, 2013 at 7:57 PM
This comment has been removed by the author.
Reply
Anonymous
May 10, 2013 at 2:46 AM

pbShowCamera.Image = showImg.ToBitmap();
บรรทัดนี้ ขึ้นตัวแดง สอบถามนิดนึงครับ ตั้งชื่อ ฟอร์มตามนี้แร้วค๊าบผม

Reply
May 10, 2013 at 10:13 AM

ปัญหาเกิดได้จาก 2 กรณีนี้ครับ
1. ชื่อ pictureBox ในส่วนของ Form Design ไม่ตรงกับ code ให้ลองกลับไปดูที่ขั้นตอนที่ 2 ดีๆ ครับ

2.showImg มีปัญหา ให้ลองไล่ๆขึ้นไปดูว่าได้ประกาศตัวแปรนี้ไว้หรือยัง

Reply
May 10, 2013 at 12:46 PM

ผมใส่ตรงนี้
cameraImage = capture.QueryFrame(1); มัน บอกว่า

No overload for method 'QueryFrame'takes 1 arguments

มันคือ อะไรเอ้ย... ขอเมล์หรือfacebook ไว้ติดต่อได้มั้ยมครับ

Reply
May 10, 2013 at 12:55 PM

https://www.facebook.com/Labplays ทักในแชทได้เลยครับ

Reply
May 10, 2013 at 1:12 PM

ขอโทษครับ ที่ครั้งที่แล้วให้ข้อมูลที่ผิดพลาดไป ถ้าคุณต้องการจะเลือกพอร์ตกล้อง เป็นพอร์ตอื่น
capture = new Emgu.Cv.Capture(1);
capture = new Emgu.Cv.Capture(2);
capture = new Emgu.Cv.Capture(3);

Reply
May 10, 2013 at 2:11 PM
This comment has been removed by the author.
Reply
August 10, 2016 at 3:34 PM

บรรทัด cameraImage = capture.QueryFrame();

ขั้นแบบนี้อ่ะครับ
Cannot implicitly convert type 'Emgu.CV.Mat' to 'Emgu.CV.Image' มันคืออะไรครับ

Reply

Post a Comment

Templated by Blogger Items