Android Mat.get()区域为15x15像素

时间:2013-12-17 09:58:07

标签: java android opencv

请求帮助。 我可以使用openCV

获取相机预览中特定点的像素信息
    @Override
public void onPreviewFrame(Mat image) {
    if (image == null || image.empty() == true) return;

    int w = image.cols(); //640 columns
    int h = image.rows(); //480 rows
    double [] p = image.get(h/2, w/2); //dividing them getting 1 point = 1 pixel
    if (p == null || p.length < 3) return;
    overlay_view.setRGB((int)p[2], (int)p[1], (int)p[0]);
}

但是我如何从15x15像素区域获得数字,从h / 2和w / 2点开始?

2 个答案:

答案 0 :(得分:0)

这样的事情:

@Override
public void onPreviewFrame(Mat image) {
    if (image == null || image.empty() == true) return;

    int w = image.cols(); //640 columns
    int h = image.rows(); //480 rows

    double[][][] array15x15 = new double[15][15][3];

    for (int row = 0; row < 15; row++) {
        for (int col = 0; col < 15; col++) {
            double[] p = image.get(w/2 + row, h/2 + col);
            if (p == null || p.length < 3) return;
            else {
                array15x15[row][col] = p;
            }
        }
    }
}

答案 1 :(得分:0)

使用OpenCV的ROI功能:

Mat roi = new Mat(image, new Rect(x, y, width, height));

Mat roi将指向与原始图像相同的数据,因此在更改数据时请考虑这一点。