Camera 从相机预览中主动读取150 x 150像素

Camera 从相机预览中主动读取150 x 150像素,camera,preview,pixels,Camera,Preview,Pixels,我已经建立了一个Android摄像头应用程序,允许我在我的主要活动中以帧布局预览摄像头。我想做的是(不使用特定于相机的功能;我希望这完全独立于硬件)在预览的中心显示150 X 150像素,或者在像素周围显示一个方框,或者模糊除150 X 150之外的所有像素。此外,不需要拍照,我想读取这些像素。最终我想要的效果是,当相机移动时,我会显示150 x 150区域内红色、绿色和蓝色浓度的变化。我知道如何进行嵌套for循环并从像素获取颜色,但我需要知道如何获取高度和重量的偏移量,以便开始读取像素。 提前

我已经建立了一个Android摄像头应用程序,允许我在我的主要活动中以帧布局预览摄像头。我想做的是(不使用特定于相机的功能;我希望这完全独立于硬件)在预览的中心显示150 X 150像素,或者在像素周围显示一个方框,或者模糊除150 X 150之外的所有像素。此外,不需要拍照,我想读取这些像素。最终我想要的效果是,当相机移动时,我会显示150 x 150区域内红色、绿色和蓝色浓度的变化。我知道如何进行嵌套for循环并从像素获取颜色,但我需要知道如何获取高度和重量的偏移量,以便开始读取像素。 提前感谢您的帮助! 迈克

“我需要知道如何获得身高和体重的偏移量 要开始从中读取像素,请执行以下操作“

获取嵌套for循环的偏移量的简单方法是使用描述性变量:

int xWidth = 150; // The length you want to concentrate on
int yHeight = 150;
int xCenter = previewWidth/2;
int yCenter = previewHeight/2;
int xStart = xCenter - xWidth/2;
int xEnd = xCenter + xWidth/2;
int yStart = yCenter - yHeight/2;
int yEnd = yCenter + yHeight/2;

for(int y = yStart; y < yEnd; y++) {
    for(int x = xStart; x < xEnd; x++) {
        // read pixels
    }
}
我之所以在这里使用许多变量,是为了让你清楚地看到我是如何解决这个问题的

让我知道进展如何

int xWidth = 150; // The length you want to concentrate on
int yHeight = 150;
int xCenter = previewWidth/2;
int yCenter = previewHeight/2;
int xStart = xCenter - xWidth/2;
int xEnd = xCenter + xWidth/2;
int yStart = yCenter - yHeight/2;
int yEnd = yCenter + yHeight/2;

for(int y = yStart; y < yEnd; y++) {
    for(int x = xStart; x < xEnd; x++) {
        // read pixels
    }
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
    previewWidth = w;
    previewHeight = h;
    ...
}