gpt4 book ai didi

android - 捕获相机预览以在 OpenCV 中使用。转换为 RGB 和灰色垫。 java 。安卓

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:52 26 4
gpt4 key购买 nike

我想检测相机预览中的人脸。我在 OpenCV 样本中看到了这个例子:

@Override
protected Bitmap processFrame(VideoCapture capture) {
capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);

if (mCascade != null) {
int height = mGray.rows();
int faceSize = Math.round(height * FdActivity.minFaceSize);
List<Rect> faces = new LinkedList<Rect>();
mCascade.detectMultiScale(mGray, faces, 1.1, 2, 2 // TODO: objdetect.CV_HAAR_SCALE_IMAGE
, new Size(faceSize, faceSize));

for (Rect r : faces)
Core.rectangle(mRgba, r.tl(), r.br(), new Scalar(0, 255, 0, 255), 3);
}

Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888);

if (Utils.matToBitmap(mRgba, bmp))
return bmp;

bmp.recycle();
return null;
}

我为我的项目重写了这段代码(从 PreviewCallback 的 onPreviewFrame() 输入 byte[] 数据):

public Highlighting[] get(byte[] data) {

matYuv = new Mat(480, 320, CvType.CV_8UC1);

matYuv.put(0, 0, data);
Imgproc.cvtColor(matYuv, matRgb, Imgproc.COLOR_YUV420sp2RGB, 4);

Highlighting[] hl = null;

Imgproc.cvtColor(matRgb, matGray, Imgproc.COLOR_RGB2GRAY, 0);

if (cascade != null) {
int faceSize = 50;
List<Rect> faces = new LinkedList<Rect>();
cascade.detectMultiScale(matGray, faces, 1.1, 2, 2, new Size(
faceSize, faceSize));

hl = new Highlighting[faces.size()];

int i = 0;
for (Rect r : faces) {
hl[i] = new Highlighting((int) r.tl().x, (int) r.tl().y,
(int) r.br().x, (int) r.br().y, "");
i++;
}

Log.i("FACES", String.valueOf(faces.size()));

}

return hl;
}

但我有问题,我的代码不能像原来那样工作——它不能检测人脸。会不会是字节数组转换有问题?

最佳答案

480+240(作为高度)来自 YUV 420 格式。

此格式具有 480x320 的 Y 平面,U 和 V 平面,每个 0.5* 分辨率的 Y 平面(有关详细信息,请查找 YUV 格式)。由于一帧的所有 3 个平面都存储在一个图像中,因此您必须分配足够的空间。

关于android - 捕获相机预览以在 OpenCV 中使用。转换为 RGB 和灰色垫。 java 。安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com