Showing posts with label data type. Show all posts
Showing posts with label data type. Show all posts

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