Tuesday, April 13, 2010

Learning OpenCV: Basic of OpenCV data type

ก่อนอื่นมาทำความรู้จักกับประเภทข้อมูลใน OpenCV

เท่าที่อ่านในข้อมูล OpenCV มีประเภทข้อมูลอยู่หลักอยู่ไม่เยอะ จริงๆ จะข้ามไปก็ได้เพราะน่าจะเดาได้กัน
เป็นส่วนใหญ่อยู่แล้ว เลยมาสรุปกันคร่าวๆ ดังนี้

  • CvPoint, CvPoint2D32f, CvPoint3D32f ใช้ระบุจุดในระนาบ สองมิติ, สามมิติ
  • CvSize ระบุขนาดของรูป
  • CvRect ระบุพื้นที่สี่เหลี่ยม
  • CvScalar
ตัวที่สำคัญต้องเรียนรู้หน่อยคือตัว CvScalar นั้นเป็นค่า array 4 ตัว เป็นค่าคงที่สำหรับ channel โดยสนับสนุนได้ถึง 4 channel  หลายฟังก์ชันใน OpenCV จะมี CvScalar เป็นพารามิเตอร์ ซึ่งจริงๆ แล้วคงหมายถึงค่าคงที่ในแต่ละ channel นั่นเอง

สำหรับข้อมูลที่น่าจะใช้บ่อยจริงๆ ใน OpenCV ก็ได้แก่

  • CvArr แทน array
  • CvMat แทน matrix
  • IplImage แทน image


สามตัวนี้จริงๆ คงจะเหมือนจะ inherit กัน โดย IplImage มาจาก CvMat, CvMat มากจาก CvArr (แต่ว่า C ไม่มี inherit นะ) การเข้าใจถึงความสัมพันธ์ของตัวแปรสามตัวนี้จะสามารถทำให้เข้าใจวิธีการส่งผ่านพารามิเตอร์ในหลายๆ ฟังก์ชันได้ เช่นการส่งผ่านพารามิเตอร์ที่เป็น CvArr สามารถรับข้อมูล CvMat หรือ IplImage ได้  (จริงๆ แล้ว CvArr ก็คือ void นั่นเอง ดังนั้นส่งอะไรมาก็ได้) ในที่นี้ใข้แทน abstract class ของ array ซึ่งใน C ไม่มี class เดี๋ยวมาว่ากันต่อเรื่อง CvMat กับ IplImage

3 comments:

  1. กำลังใช้ตัวนี้ทำโปรเจคอยู่เรยค้ะ อ่านแล้วไพด้ความรู้มาช่วยเยอะเรย อัพบ่อยๆน้ะค้ะ จะติดตาม

    ReplyDelete
  2. คอมพิวเตอร์วิชั่นเมืองไทยจะพัฒนามากขึ้นอย่างมากถ้ามีคนอย่างคุณอยู่ในสังคม

    ReplyDelete
  3. ขอบคุณครับ มีประโยชน์มากเลยครับ

    ReplyDelete