我试图让所有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:= armeabi-v7更新为APP_ABI:= armeabi之前,它也是为Tuts 3和4做的,但这并不能解决其他Tuts的问题。
请帮忙。我是Android NDK的新手,只有在Windows中使用Open CV经验。提前谢谢。
我注意到在我可以运行的教程中,手机摄像头是Camera类型,并使用.open()命令打开;不能运行的摄像头,手机摄像头被声明为VideoCapture类型,显然需要包装库。只是不知道如何把它拿到手机上。
答案 0 :(得分:1)
显然,这与我正在测试它的手机有关:三星Galaxy S.我发现其他人遇到了类似的问题:Camera not working
我没有经历Pete为解决这个问题而进行的超人编程跳跃,而是决定在另一部手机HTC幻灯片上试一试。瞧,所有的教程都没有问题,也没有重新编码。
为了完成任务,我将为我的项目使用HTC幻灯片。 如果有人遇到更好的解决方案,请告诉我!
更新:我做了更多研究:http://answers.opencv.org/question/1223/android-opencv-support/ 似乎所有设备都不支持OpenCV Android Native Camera,因为它被硬件平台供应商修改。
最终更新:我做了一些实验教程,并有一个主要的DUH时刻。实际上,您可以在不使用OpenCV Native Camera的情况下使用OpenCV。我通过转换Tutorial 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. Converting to RGB and Gray Mat's. Java. Android
万一我没有见到你,大家下午好,晚上好,晚安!
答案 1 :(得分:0)
我认为这是因为你的手机,因为我可以在我的三星Galaxy Note手机中完美地运行所有样品。尝试更换手机,然后运行示例。