Chapter 3. Getting to Know OpenCV
OpenCV Primitive Data Types
OpenCV has several primitive data types. These data types are not primitive from the point of view of C, but they are all simple structures, and we will regard them as atomic. You can examine details of the structures described in what follows (as well as other structures) in the cxtypes.h header file, which is in the …/OpenCV/cxcore/include directory of the OpenCV install.
The simplest of these types is CvPoint. CvPoint is a
simple structure with two integer members, x and y. CvPoint has two siblings: CvPoint2D32f and CvPoint3D32f. The former
has the same two members x and y, which are both floating-point numbers. The latter also contains a third
element, z.
CvSize is more like a cousin to CvPoint. Its members are width and height, which are both integers.
If you want floating-point numbers, use CvSize's cousin
CvSize2D32f.
CvRect is another child of CvPoint and CvSize; it contains four
members: x, y, width, and height. (In case you were worried, this child was adopted.)
Last but not least is CvScalar, which is a set of
four double-precision numbers. When memory is not an issue, CvScalar is often used to represent one, two, or three real numbers (in these
cases, the unneeded components are simply ignored). CvScalar has a single member val, which is a
pointer to an array containing the four double-precision floating-point numbers.
All of these data types have constructor methods with names like cvSize()
(generally[14] the constructor ...