标签: javacv

Android上的人脸识别

我正在尝试在Android上开发一个Face Recognition应用程序,因为我不想在项目上使用NDK(只是没有时间切换),我坚持使用Java开发整个应用程序,因此我遇到了一些问题:

  1. 似乎Contrib模块不包含在OpenCV 2.4.2中.无论如何在项目中使用它?

  2. 我尝试使用JavaCV来使用Contrib Module的"FaceRecognizer"类.有两个类可用,称为"FaceRecognizer"和"FaceRecognizerPtr".有谁知道这两者之间的区别是什么?

  3. 上面提到的类有一个叫做"Train"的方法,它在(C++中)接收两个类型为"Mat&Integer"(model->train(images,labels) & train(Vector<mat> theImages, Vector<int> theLabels)的向量.我尝试ArrayList<mat> & ArrayList<integer>在Java中传递它们和向量,但似乎该方法明确接受"CvArr"数据类型,我不知道如何获取...这是错误:

opencv_contrib.FaceRecognizer类型中的方法train(opencv_core.CvArr,opencv_core.CvArr)不适用于参数(ArrayList,ArrayList)

有谁知道如何将我的ArrayList更改为CvArr?

这是我的第一篇文章,我不确定是在一个帖子还是在三个帖子中提出所有三个问题,对于给您带来的任何不便表示遗憾...如果您需要有关该项目的任何其他信息,请随时提出.

android opencv face-recognition javacv

14
推荐指数
2
解决办法
4万
查看次数

哪里可以获得openCV的jar?

openCV核心扩展的Java jar库在哪里,以便我可以在我的java代码中导入它?

我找不到一个他们教过如何正确设置所有东西的地方.我正在使用Ubuntu 12.04,我安装了openCV.我想在eclipse IDE中使用它,eclipse需要一个jar文件,以便我可以使用openCV函数.我看到以下链接使用了import org.opencv.core.Core;

我怎样才能获得那些.jar文件?

java eclipse opencv javacv ubuntu-12.04

13
推荐指数
1
解决办法
3万
查看次数

Proguard删除Android应用程序中的注释

我在我的应用程序中使用gradle包含了一个项目:

compile group: 'org.bytedeco', name: 'javacv', version: '0.11'
Run Code Online (Sandbox Code Playgroud)

哪个建好了.但每当我在启用proguard的情况下运行应用程序时,它显然会@Platform从包含的jar中删除注释.

我尝试使用基于http://proguard.sourceforge.net/manual/examples.html#annotations的以下内容

-keepattributes *Annotation*

-keep @org.bytedeco.javacpp.annotation interface * {
    *;
}
Run Code Online (Sandbox Code Playgroud)

我还根据http://proguard.sourceforge.net/manual/troubleshooting.html#notkept尝试了以下内容

-keep @interface *
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.还有什么可以阻止proguard删除这些注释?我正在考虑使用-injars或者-libraryjars我相信gradle为你处理.


解决方案:

所以解决方案如下:

我在我的proguard规则中包含以下内容:

# JavaCV
-keep @org.bytedeco.javacpp.annotation interface * {
    *;
}

-keep @org.bytedeco.javacpp.annotation.Platform public class *

-keepclasseswithmembernames class * {
    @org.bytedeco.* <fields>;
}

-keepclasseswithmembernames class * {
    @org.bytedeco.* <methods>;
}

-keepattributes EnclosingMethod
-keep @interface org.bytedeco.javacpp.annotation.*,javax.inject.*

-keepattributes *Annotation*, Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable, LocalVariableTypeTable, …
Run Code Online (Sandbox Code Playgroud)

java android proguard minify javacv

13
推荐指数
1
解决办法
2963
查看次数

Android计算机视觉JavaCV OpenCV FastCV比较

我正在研究学校项目,其中一部分应该是关于Android计算机视觉库的现状.我以极大的热情去了它,因为计算机视觉看起来像是一个引人入胜的主题,但我一直在寻找超过一周的时间而且我找不到多少.我希望能够提供有关库本身以及它们之间的比较的信息.

我将分享到目前为止我发现的内容.

OpenCV的

  • 似乎是最先进的和最受欢迎的.

  • 提供最多的功能

  • 它有向后兼容性的问题

  • 很快(至少我听说过,但我没有关于它的信息)

  • 确实有最多的书籍(至少对于C++版本)

JavaCV

  • 是少数其他库的包装,包括opencv

FastCv

  • 高通公司背后的新品.

Wikitude

  • 这更多是为了增强现实,但其核心仍然是计算机视觉.

正如您所看到的,我有一些关于它的信息,并且对每个库进行自己的测试远远超出了我目前的计算机视觉技能.

亲切的问候,彼得.

android opencv computer-vision javacv google-vision

12
推荐指数
3
解决办法
9584
查看次数

OpenCV/JavaCV人脸识别 - 非常相似的置信度值

我将解释我想要做什么,因为它似乎与理解我的问题有关.

我目前正在尝试基于数据库中的已知图片对在摄像机前面的人进行人脸识别.

这些已知图片是从识别智能卡(其仅包含单个正面图片)或来自社交网络的正面脸部图片中收集的.从我到目前为止所看到的情况来看,似乎要获得良好的人脸识别,需要大量的训练图像(50+).因此,由于我收集的图像很少能够创建可靠的训练集,所以我尝试使用我的实时相机帧捕获(当前使用150)作为训练集,并且先前收集的识别图像作为测试集.我不确定我正在尝试的是否正确,所以如果我搞砸了,请告诉我.

所以,问题是,在我说了之后,我从智能卡中找到了5张识别出来的图片,我尝试使用相机拍摄的150帧作为训练集进行人脸识别.当试图识别时,5个测试面中每个测试面的置信度值非常相似,使得整个程序无用,因为我无法准确识别任何人.通常,使用不同的相机捕捉作为训练我从随机人物的照片中获得比自己的照片更高的置信度值.

我很感激你能给我的任何帮助,因为我在这里不知所措.

谢谢.

注意:我正在使用OpenCV的JavaCV包装器来创建我的程序,以及包中包含的haarcascades.特征脸是使用的算法.

java opencv eigenvector javacv

12
推荐指数
2
解决办法
2万
查看次数

Android OpenCV查找轮廓

我需要提取图像的最大轮廓.这是我目前正在使用的代码.在线收集了几个片段

List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
Imgproc.findContours(outerBox, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);
double maxArea = -1;
int maxAreaIdx = -1;
for (int idx = 0; idx < contours.size(); idx++) {
    Mat contour = contours.get(idx);
    double contourarea = Imgproc.contourArea(contour);
    if (contourarea > maxArea) {
        maxArea = contourarea;
        maxAreaIdx = idx;
    }
}
Run Code Online (Sandbox Code Playgroud)

它似乎工作.但是,我不太确定如何从这里开始.我尝试过使用Imgproc.floodFill,但我不太清楚如何使用.此功能需要Mat与原始Mat+2水平和+2垂直相同大小的桅杆.当我在轮廓上运行它时contours.get(maxAreaIdx),它给了我一个错误.代码:

Mat mask = Mat.zeros(contour.rows() + 2, contour.cols() + 2, CvType.CV_8UC1);
int area = Imgproc.floodFill(contour, mask, new Point(0,0), new Scalar(255, 255, …
Run Code Online (Sandbox Code Playgroud)

java android opencv javacv

11
推荐指数
1
解决办法
2万
查看次数

一起显示两个视频,然后在单个屏幕上作为合并视频输出

这个问题可能听起来有点复杂或含糊不清,但我会尽量让它尽可能清楚.我做了很多谷歌搜索并花了很多时间,但没有找到任何与Windows相关的东西.

我想在一个屏幕上播放两个视频.一个在背景中全屏,一个在顶部,在一个小窗口或小角度/高度在右角.然后我想要一个输出,其中包括两个视频在一个屏幕上一起播放.

所以基本上一个视频覆盖另一个,然后我希望将其作为输出流式传输,以便用户可以在以后播放该流.

我不是要求你编写整个代码,只是告诉我该做什么或如何做,或者我必须使用哪个工具或第三方SDK来实现它.

更新:尝试了很多解决方案.

1. Xuggler- 不支持Android.

2. JavaCVJJMPEG- 无法找到任何建议如何做的教程?

现在正在寻找FFMPEG-搜索了很长时间但却无法找到任何建议编码方式的教程.我找到了如何解决它的命令行方式.所以任何人都可以建议或指出FFMPEG的教程或告诉任何其他方式

android ffmpeg xuggler javacv android-videoview

11
推荐指数
1
解决办法
2534
查看次数

Opencv:将平面图图像转换为数据模型

我的计划是从纸上绘制的平面图中提取信息.我已经设法检测到70-80%的拉门:

检测平面图中的门

现在我想从墙上创建一个数据模型.我已经设法提取它们,你可以在这里看到:

提取墙壁 从那我创造了轮廓:

提取墙线 我现在的想法是从该图像中获取线条的交叉点并从中创建数据模型.但是,如果我使用houghlines算法,我得到这样的东西:

在此输入图像描述 有人对如何获得交叉点或甚至另一个想法如何获得模型有不同的想法?会很好的.

PS:我正在使用javacv.但是opencv中的算法也可以正常,因为我可以翻译它.

c++ opencv model image-processing javacv

11
推荐指数
2
解决办法
2938
查看次数

在Java中使用OpenCV和JavaCV

我越来越绝望!我试图在Java中使用OpenCV,通过JavaCV(JNA为java包装OpenCV).

我在Mac Os X 1.5上.

我安装了OpenCV,我可以编译并运行包含的示例.这样才行.

现在我打开Eclipse,然后创建一个新项目,如下所述:http: //code.google.com/p/javacv/

在那个新项目中,只有一个小类调用了opencv函数(我使用了示例代码):

import static name.audet.samuel.javacv.jna.cxcore.*;
import static name.audet.samuel.javacv.jna.cv.*;
import static name.audet.samuel.javacv.jna.highgui.*;
import static name.audet.samuel.javacv.jna.cvaux.*;

public class Test {
    public static void main(String[] args) {
        IplImage image = cvLoadImage("test.png", 1);
        if (image == null) {
            System.err.println("Could not load image file.");
        } else {
            cvSmooth(image, image, CV_GAUSSIAN, 3, 0, 0, 0);
            // ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我有以下错误:

线程"main"中的异常java.lang.UnsatisfiedLinkError:无法加载库'cxcore':dlopen(libcxcore.dylib,9):找不到图像

请,我需要帮助,我看了几个小时谷歌,我不知道在哪里寻找.

java eclipse macos opencv javacv

10
推荐指数
1
解决办法
2万
查看次数

opencv经理包没找到?如何自动安装?

我正在使用openCV,每当我运行代码时它都会给我包管理器没有安装,那么如何通过我的应用程序安装它.是必须从Play商店下载它或者我们可以自动安装在设备中.请帮我.提前致谢.

android opencv javacv

10
推荐指数
3
解决办法
2万
查看次数