我有Matces数据访问问题。我在图片上执行操作,并且需要分离地访问每个像素。 我必须对简单类型(float,int等)进行必要的操作。 我accesing数据的方法是象下面这样:OpenCv垫到阵列访问
for (int idx = 0; idx < image.rows; idx++) {
for (int idy = 0; idy < image.cols; idy++) {
int color_tid = idx * image.cols * image.channels() + idy * image.channels();
uint8_t blue = image.data[color_tid];
uint8_t green = image.data[color_tid + 1];
uint8_t red = image.data[color_tid + 2];
float pixelVal = (int) blue + (int) green + (int) red;
(...)
}
}
这种方法是否正常工作只方形的图像(N×N像素),但对于N×M个有正方形区域(小刃)之外的异常。 有谁知道任何其他方式来访问图片垫的数据? 示例图片(正确的结果):
异常(我的问题)
没有看到所有的代码,很难说这是怎么回事。然而,在你的循环内,你可以写:'Vec3b v = image(row,col); float pixelVal = v [0] + v [1] + v [2];'。还要记住_rows_是_y_坐标,而_cols_是_x_。所以你可能只是换了你的指数。 – Miki
Vec3b v不是简单的类型...我必须使用image.data –
你**必须** ....是功课还是什么? – Miki