访问 cv::Mat 中的所有像素
这是访问 cv::Mat
中所有像素的正确方法吗:
for( row = 0; row < mat.rows; ++row)
{
for ( col = 0; col < mat.cols; ++col)
{
}
}
或者是否有类似于此公式的 IplImage *
公式方法:
temp_ptr = &((uchar*)(img->imageData + (img->widthStep*pt.x)))[pt.y*3];
Is this the correct way of accessing all pixels in cv::Mat
:
for( row = 0; row < mat.rows; ++row)
{
for ( col = 0; col < mat.cols; ++col)
{
}
}
Or is there a formula method similar to this formula for an IplImage *
:
temp_ptr = &((uchar*)(img->imageData + (img->widthStep*pt.x)))[pt.y*3];
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在最好的情况下,所有像素都连续存储,您应该能够执行以下操作:
要更通用一点,但仍然更快,请查看 示例代码中提及
Mat::isContinously()
。计算元素地址的一般公式可以参见这里 (转载如下)。In the best case, where all the pixels are stored contiguously you should be able to do:
To be a bit more generic, but still fast, have a look at the sample code mentioned with
Mat::isContinuous()
. The general formula for calculating the address of an element can be seen here (Reproduced below).