0

我正在尝试运行所有 OpenCV 教程,但到目前为止,还无法运行教程 2、人脸检测、颜色斑点检测;但是,我可以运行教程 0、1、3 和 4。我已更正了许多错误,包括必须添加所有包含路径:

<includepath>${NDKROOT}/platforms/android-9/arch-arm/usr/include</includepath>
<includepath>C:\android-ndk-r8b\sources\cxx-stl\gnu-libstdc++\4.6\libs\armeabi\include</includepath>
<includepath>${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include</includepath>
<includepath>C:\android-opencv\sdk\native\jni\include</includepath>
<includepath>C:\android-ndk-r8b\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.6.x-google\include</includepath>

我还更新了 Application.mk 文件以使用 APP_ABI := armeabi,这允许 Tuts 3 和 4 工作。Android版本都是正确的。

一些示例根本不使用 C++ 代码,但它们仍然因无法打开相机包装库而失败。这是在它似乎经历了一系列尝试链接库的每个版本之后,例如 libnative_camera_r2.3.3、r2.2.0 等。在我更新 APP_ABI 之前,Tuts 3 和 4 也这样做了:= armeabi -v7 to APP_ABI := armeabi,但这并不能解决其他 Tuts 的问题。

请帮忙。我是 Android NDK 的新手,只有在 Windows 中使用 Open CV 的经验。提前致谢。

我确实注意到,在我可以运行的教程中,手机摄像头是 Camera 类型,并且是使用 .open() 命令打开的;不会运行的摄像头,手机摄像头被声明为 VideoCapture 类型,这显然需要包装库。只是不知道如何把它放到手机上。

4

2 回答 2

1

显然,这与我正在测试的手机有关:Samsung Galaxy S。我发现其他人也有类似的问题:Camera not working

与其经历皮特为解决这个问题所经历的超人编程飞跃,我决定在另一部手机上尝试一下,HTC 幻灯片。瞧,所有的教程都运行良好,没有问题,没有重新编码。

为了完成任务,我将为我的项目使用 HTC 幻灯片。如果有人遇到更好的解决方案,请告诉我!

更新:我做了一些更多的研究:http : //answers.opencv.org/question/1223/android-opencv-support/ 由于硬件平台供应商对其进行了修改,所有设备似乎都不支持 OpenCV Android Native Camera .

最后更新:我对教程做了更多的实验,并有一个重要的 DUH 时刻。您实际上可以在不使用 OpenCV Native Camera 的情况下使用 OpenCV。我通过转换教程 3 中的 SampleViewBase 类来替换人脸检测示例中的 SampleCvViewBase 类对此进行了测试,效果很好!主要技巧是在 processImage 调用期间转换数据,因此:

capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);

变成了

Mat mYuv = new Mat(getFrameHeight()+getFrameHeight()/2, getFrameWidth(), CvType.CV_8UC1);
mYuv.put(0, 0, data);
Imgproc.cvtColor(mYuv, mRgba, Imgproc.COLOR_YUV420sp2RGB, 4);
Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGB2GRAY, 0);

主要帮助来自另一篇 stackoverflow 文章:Capture camera preview for using in OpenCV。转换为 RGB 和灰色垫。爪哇。安卓

如果我没有看到你,下午好,晚上好,晚安!

于 2012-09-16T19:59:58.703 回答
0

我认为这是因为你的手机,因为我可以在我的三星 Galaxy Note 手机中完美地运行所有样本。尝试更换手机,然后运行示例。

于 2013-05-10T09:08:09.137 回答