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:
G:
R:
二、
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_更加简单







浙公网安备 33010602011771号