//对连续空间的遍历访问
Mat mat(3000, 4000, CV_8UC3);
//mat.create(3000,4000,CV_8UC3);
int es = mat.elemSize();//元素大小字节数
int size = mat.rowsmat.colses; //获取大小
for (int i = 0; i < size; i += es) //i时元素的位置
{
mat.data[i] = 255; //B
mat.data[i + 1] = 0; //G
mat.data[i + 2] = 255; //R
}
//遍历不连续空间
for (int row = 0; row < mat.rows; row++)
{
for (int col = 0; col < mat.cols; col++)
{
(&mat.data[rowmat.step])[coles] = 0;
(&mat.data[rowmat.step])[coles+1] = 0;
(&mat.data[rowmat.step])[coles+2] = 0;
}
}
//使用ptr遍历mat
for (int row = 0; row < mat.rows; row++)
{
for (int col = 0; col < mat.cols; col++)
{
Vec3b *c = mat.ptr(row, col);
c->val[0] = 0; //B
c->val[1] = 255; //G
c->val[2] = 0; //R
}
}
//使用at接口遍历mat
for (int row = 0; row < mat.rows; row++)
{
for (int col = 0; col < mat.cols; col++)
{
Vec3b &m = mat.at(row,col);
m[0] = 100;
m[1] = 100;
m[2] = 100;
}
}
//使用迭代器遍历Mat
auto it = mat.begin();
auto it_end = mat.end();
for (; it!=it_end; it++)
{
(*it).val[0] = 0;//B
(*it).val[1] = 0;//G
(*it).val[2] = 0;//R
}
namedWindow(“mat”);
imshow(“mat”, mat);
waitKey(0);
QT和OpenCv联合之遍历mat的四种方法
最新推荐文章于 2024-06-25 13:09:19 发布