opencv祭り (配布用)

27
Mar 5 2011 OpenCV⚍䜚 1 -OpenCV⚍䜚- ᡭᓥ▱ tomoaki_teshima [email protected]

Upload: tomoaki0705

Post on 14-Apr-2017

397 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 1

-OpenCV -

tomoaki_teshima

[email protected]

Page 2: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 2

• IplImage CvMat, cv::Mat

–widthStep

Page 3: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 3

• 2

( - Wikipedia[1] )

[1]http://ja.wikipedia.org/wiki/ Thanks to @yantaka718

Page 4: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 4

IplImage CvMat

• IplImage

– IPL Intel Performance Library

• Intel

• CvMat

build/include/opencv2/core/types_c.h

Page 5: OpenCV祭り (配布用)

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

Page 6: OpenCV祭り (配布用)

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

Page 7: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 7

image = cvCreateImage(cvSize(640, 480), IPL_DEPTH8U, 1);

Matrix = cvCreateMat(3, 3, CV_32FC1);

core/src/array.cpp

Page 8: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 8

Page 9: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 9

IplImage•width•height•depth•nChannels•imageData

CvMat•cols•rows•type•data

Page 10: OpenCV祭り (配布用)

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

Page 11: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 11

cv::Mat

• OpenCV2.0

• C++

Page 12: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 12

IplImage CvMat

cv::Mat

cvGetMat

cvGetImage

cvConvert

(IplImage) (CvMat)

cvarrToMat cvarrToMat

Page 13: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 13

imageData,12

at(), 9

cvGet2D, 4

ptr(), 3

Page 14: OpenCV祭り (配布用)

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]

Page 15: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 15

(x,y) row,column

x

y

34333231

24232221

14131211

PPPP

PPPP

PPPP

jiP( )yx,

i

j

Page 16: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 16

• cvPtr2D

• cvGet2D/cvSet2D

• cvmGet/cvmSet

• cvGetReal2D/cvSetReal2D

• at

core/src/array.cpp

core/src/matrix.cpp

Page 17: OpenCV祭り (配布用)

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

Page 18: OpenCV祭り (配布用)

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;

Page 19: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 19

widthStep (IplImage*)

8U

8U

8U

8U

8U

depth

12333

12434

4131

4414

4111

widthStepwidth

CvMat cv::Mat

Page 20: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 20

IplImage CvMat,cv::Mat

Page 21: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 21

IplImage *image;

image = cvLoadImage(“lenga.jpg”);

cvShowImage("Test", image);

cvWaitKey(0);

image->width = 101;

cvShowImage("Test", image);

cvWaitKey(0);

Page 22: OpenCV祭り (配布用)

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));

Page 23: OpenCV祭り (配布用)

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

Page 24: OpenCV祭り (配布用)

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

Page 25: OpenCV祭り (配布用)

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);

Page 26: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 26

cvReshape 3 ( 4)

Page 27: OpenCV祭り (配布用)

Mar 5 2011 OpenCV 27

– ITS

– 2010

– Wiki

– http://tessy.org/wiki/