opencv祭り (配布用)
TRANSCRIPT
Mar 5 2011 OpenCV 2
•
• IplImage CvMat, cv::Mat
–
–
–widthStep
–
Mar 5 2011 OpenCV 3
• 2
( - Wikipedia[1] )
[1]http://ja.wikipedia.org/wiki/ Thanks to @yantaka718
Mar 5 2011 OpenCV 4
IplImage CvMat
• IplImage
–
– IPL Intel Performance Library
• Intel
• CvMat
–
•
build/include/opencv2/core/types_c.h
Mar 5 2011 OpenCV 5
IplImage *image;
image = cvCreateImage(cvSize(640, 480), IPL_DEPTH8U, 1);
CvMat *matrix;
Matrix = cvCreateMat(3, 3, CV_32FC1);
cvReleaseImage(&image);
cvReleaseMat(&matrix);
•Create**←→malloc
•Release**←→ free
• malloc free call
core/src/array.cppcore/src/alloc.cpp
Mar 5 2011 OpenCV 6
IPL_DEPTH_** CV_**
CvMatIplImage
CV_USRTYPE1
CV_64F
CV_32F
CV_32S
CV_16S
CV_16U
CV_8S
CV_8U
-
-
IPL_DEPTH_64F
IPL_DEPTH_32F
IPL_DEPTH_32S
IPL_DEPTH_16S
IPL_DEPTH_16U
IPL_DEPTH_8S
IPL_DEPTH_8U
IPL_DEPTH_1U
--
8
4
4
2
2
1
1
1
(64)
(32)
(0x80000020)
(0x80000010)
(16)
(0x80000008)
(8)
(1)
( )
(7)
(6)
(5)
(4)
(3)
(2)
(1)
(0)
( )
build/include/opencv2/core/types_c.h
unsigned char
char
unsigned short
short
int
float
double
Mar 5 2011 OpenCV 7
image = cvCreateImage(cvSize(640, 480), IPL_DEPTH8U, 1);
Matrix = cvCreateMat(3, 3, CV_32FC1);
core/src/array.cpp
Mar 5 2011 OpenCV 8
→
Mar 5 2011 OpenCV 9
IplImage•width•height•depth•nChannels•imageData
CvMat•cols•rows•type•data
Mar 5 2011 OpenCV 10
•
• width height depth
• CvMat/IplImage
•
• width height
IplImage CvMatcvGetMat
cvGetImage
IplImage CvMatcvConvert
cvConvert
core/src/array.cpp
core/src/convert.cpp
IplImage CvMat IplImage CvMat
Mar 5 2011 OpenCV 11
cv::Mat
• OpenCV2.0
• C++
•
•
Mar 5 2011 OpenCV 12
IplImage CvMat
cv::Mat
cvGetMat
cvGetImage
cvConvert
(IplImage) (CvMat)
cvarrToMat cvarrToMat
Mar 5 2011 OpenCV 13
imageData,12
at(), 9
cvGet2D, 4
ptr(), 3
Mar 5 2011 OpenCV 14
736.742
813.947
1133.22
1318.68
77.2042
396.474
581.938
0 200 400 600 800 1000 1200 1400
cvGetReal2D
cvGet2D
Total Access
[ms]
Mar 5 2011 OpenCV 15
(x,y) row,column
x
y
34333231
24232221
14131211
PPPP
PPPP
PPPP
jiP( )yx,
i
j
Mar 5 2011 OpenCV 16
•
•
•
• cvPtr2D
• cvGet2D/cvSet2D
• cvmGet/cvmSet
• cvGetReal2D/cvSetReal2D
• at
core/src/array.cpp
core/src/matrix.cpp
Mar 5 2011 OpenCV 17
CvArr
cvGet2D( const CvArr* arr, int y, int x )
build/include/opencv2/core/types_c.h
core/src/array.cpp
typedef void CvArr
CvMat* IplImage*
dandelion1124
Mar 5 2011 OpenCV 18
width widthStep
•
• 4
• 32
• int nChannels;• int height;• int width;• int widthStep;• int depth;• int origin;• struct _IplROI *roi;• int imageSize;• char *imageData;• char *imageDataOrigin;
Mar 5 2011 OpenCV 19
widthStep (IplImage*)
8U
8U
8U
8U
8U
depth
12333
12434
4131
4414
4111
widthStepwidth
CvMat cv::Mat
Mar 5 2011 OpenCV 20
IplImage CvMat,cv::Mat
Mar 5 2011 OpenCV 21
IplImage *image;
image = cvLoadImage(“lenga.jpg”);
cvShowImage("Test", image);
cvWaitKey(0);
image->width = 101;
cvShowImage("Test", image);
cvWaitKey(0);
Mar 5 2011 OpenCV 22
( 1)
CvMat matrix; IplImage result;
IplImage *image = cvLoadImage(“image.bmp”);
cvGetMat(image, &matrix);
cvGetSubRect(&matrix, &result, cvRect(x, y, w, h));
Mar 5 2011 OpenCV 23
3 3x3
→
n
n
n
nn
nn
y
x
yy
xx
s
ys
xs
s
ys
xs
s
ys
xs
LL
21
21
2
22
22
1
11
11cvConvertPointsHomogeneous
3XN NX3
N=3
Mar 5 2011 OpenCV 24
( 2)
3
3
3
2
2
2
1
1
1
s
y
x
s
y
x
s
y
x 1
N(=3)
3
1x
1y
1s
Mar 5 2011 OpenCV 25
( 3)
CvMat *data = cvCreate….
CvScalar color;
color = cvScalar(220, 165,2);
cvSet1D(data, 0, color);
color = cvScalar(303, 25,1.1);
cvSet1D(data, 1, color);
color = cvScalar(75, 12, 29.2);
cvSet1D(data, 2, color);
double raw_data[] =
{220, 165, 2,
303, 25, 1.1,
75, 12, 29.2};
CvMat data;
data = cvMat(3, 3,
CV_64F,
(void*)raw_data);
Mar 5 2011 OpenCV 26
cvReshape 3 ( 4)
Mar 5 2011 OpenCV 27
•
•
–
– ITS
– 2010
– Wiki
– http://tessy.org/wiki/