opencv随手记

一、Opencv的Mat存贮图像是按照BGR来存的

M.create(4,4, CV_8UC3);

for(int i=0;i<M.rows;i++)

{

for (int j=0;j<M.cols;j++)

{

M.at<Vec3b>(i,j)[0]=0;

M.at<Vec3b>(i,j)[1]=0;

M.at<Vec3b>(i,j)[2]=255;

}

}

cout << "M = "<< endl << " " << M << endl << endl;

B:

image

                             image

G:

image

                             image

R:

image

                              image

二、

Mat::step是每一行的步长,即一行的字节个数

Mat::elemSize()是行元素的大小,也是以字节为单位的

uchar* data = v1.data; 

data = v1.data + i * v1.step + j * v1.elemSize()

三、对于代码运行时间的测试

double t = (double)getTickCount(); // 使用getTickCount()和getTickFrequency

Mat img1(1000, 1000, CV_32F); 

for (int i=0; i<1000; i++) 

{ 

for (int j=0; j<1000; j++) 

{ 

img1.at<float>(i,j) = 3.2f; 

} 

} 

t = (double)getTickCount() - t; 

printf("in %gms\n", t*1000/getTickFrequency());

四、对于多通道的图像使用Mat_更加简单

posted @ 2012-09-22 10:18  行远_  阅读(362)  评论(0)    收藏  举报