【问题标题】:OpenCV4Android - capturing images in rectangles (face detection)OpenCV4Android - 以矩形捕捉图像(人脸检测)
【发布时间】:2013-07-20 10:56:05
【问题描述】:

我过去一直在使用 OpenCV C/C++,现在我正在尝试 Android。我正在检测面部特征。我使用 OpenCV 示例进行人脸检测,并且通过级联检测特征。我想问你的是:

1)如何将反应角中的区域捕获到变量/设备内存:

在 OpenCV 中它是这样工作的:

cvSetImageROI(img1, cvRect(10, 15, 150, 250));

IplImage *img2 = cvCreateImage(cvGetSize(img1),
                           img1->depth,
                           img1->nChannels);
cvCopy(img1, img2, NULL);

在 Android 示例中,我有一个包含已找到人脸矩形的数组:

Rect[] facesArray = faces.toArray();
for (int i = 0; i < facesArray.length; i++)
Core.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(), FACE_RECT_COLOR, 3);

但我不知道如何保存它,因为我无法处理 IplImage。你能指导我一点或者给我一些我可以研究的资源吗?

2)如果有任何方法可以在相机视图上找到的区域上设置 onClick,所以我可以点击选择的脸,将其写入某种变量或保存在内存中

【问题讨论】:

    标签: android c++ opencv face-detection


    【解决方案1】:

    我想,你在找mRgba.submat(facesArray[i])

    (非常有偏见的个人意见:您仍在使用 IplImages(又名 c-api)?哇。坏习惯。转移到 c++ api!)

    【讨论】:

    • 是的,它很有帮助,它允许我将 reactangle 中的区域写入变量。如果您还可以告诉我显示它的方式,因为当我这样做时: if (facesArray[0]!=null) { mChosenFace=mRgba.submat(facesArray[0]);返回 mChosenFace; } 我的相机视图冻结。嗯,我有问题,你可以看到,在 C++ 中我使用的是书,我有参考,现在我不知道编写和显示图像的基础知识。你有什么资料可以让我学习吗?
    • 你不能只说: if (facesArray[0]!=null) 。如果没有找到人脸,则没有 facesArray[0],这已经是一条非法指令。你必须先检查 facesArray.length
    猜你喜欢
    • 2020-05-31
    • 2016-02-25
    • 2017-12-06
    • 2010-11-10
    • 2013-12-04
    • 1970-01-01
    • 2013-08-22
    • 2019-12-01
    • 1970-01-01
    相关资源
    最近更新 更多