标签: opencv4android

如何在Opencv(Android)中绘制轮廓周围的矩形?

我想在轮廓周围绘制矩形.我在Python中完美地完成了它但是当我将该代码翻译成android时,应用程序每次都会崩溃.

ImageView im = (ImageView) findViewById(R.id.sampleImageView);
// Bitmap bitmap =  ((BitmapDrawable) im.getDrawable()).getBitmap();
Bitmap bitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.room);

Mat src = new Mat();
Utils.bitmapToMat(bitmap, src);
Mat gray = new Mat();
Imgproc.cvtColor(src, gray, Imgproc.COLOR_RGBA2GRAY);
Imgproc.Canny(gray, gray, 50, 200);
Imgproc.threshold(gray, gray, 10, 255, Imgproc.THRESH_OTSU);

List<MatOfPoint> contours = new ArrayList<>();
Mat hierarchy = new Mat();
Imgproc.findContours(gray, contours, hierarchy, Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE, new Point(0, 0));
Imgproc.drawContours(src, contours, -1, new Scalar(0, 0, 255), -1);

/********************************/
MatOfPoint2f approxCurve = new MatOfPoint2f();

// For each contour found
for (int …
Run Code Online (Sandbox Code Playgroud)

android opencv opencv4android

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

在Android中使用OpenCV进行人体检测

我想创建一个Android应用程序,在其中我要从图像中检测人体。我尚未开始编码(仅是一个主意),所以我无法向您显示任何代码。我听说过适用于Android的OpenCV人脸检测。我尝试使用OpenCV人脸检测,但是由于我是android的新手,所以我无法这样做。

我的问题是“ OpenCV中是否有什么可以帮助我检测整个人体而不仅仅是面部的东西?”,如果是,那么“是否有任何有关此的教程?”

提前感谢您的帮助。

android opencv opencv4android

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

使用ORB逐步检测对象

我必须创建一个Android应用程序来识别相机中的一些物体(汽车方向盘,车轮).我尝试使用哈尔分类器,但没有成功,我的时间不多了(这是一个学校项目).所以我决定寻找另一种方式.我为我的目标找到了一些其他方法 - ORB.我发现在这个答案怎么做.我的问题是事情搞得一团糟.你能否给我一步一步的答案,告诉我如何在我给出的链接中实现问题的答案:

从提取特征点到训练KD树并将其用于来自摄像机的每个帧.

奖金问题:你能给出特征点的定义吗?这是我无法理解的.使用ORB会慢慢检测吗?我知道OpenCV可以在原生android中使用,不会让事情变得更快吗?

我需要尽快创建这个应用程序.请帮忙!

android opencv kdtree orb opencv4android

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

如何在opencv c ++/opencv java中使用fred的imagemagick textcleaner脚本?

我正在尝试开发一个可以从图像中读取文本的应用程序.我必须清理图像的背景.我听说fred的imagemagick textcleaner脚本可以使用,但我不知道如何使用它.有没有人对它有任何想法?

输入图片:

在此输入图像描述

opencv tesseract image-processing opencv4android

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

通过OpenCV 3.0 RC1在Android中创建BackgroundSubtractorMOG2

我想在我的Android手机上用OpenCV 3.0中的MOG2做背景减法.但是,似乎没有合适的构造函数在3.0版中创建新的BackgroundSubtractorMOG2.我的代码就在这里.

@Override
public void onCameraViewStarted(int width, int height) {
    mFrame = new Mat(height, width, CvType.CV_8UC4);
    mFgMaskMOG = new Mat(height, width, CvType.CV_8UC1);
    pMOG2 = new BackgroundSubtractorMOG2();
}
Run Code Online (Sandbox Code Playgroud)

使用这些代码,Android studio提醒我构造函数具有受保护的访问权限.此外,当我读取BackgroundSubtractorMOG2的java src代码时,我发现构造函数有一个参数:long addr.src代码如下:

protected BackgroundSubtractorMOG2(long addr) { super(addr); }
Run Code Online (Sandbox Code Playgroud)

我是OpenCV4Android的新手,因此不知道如何在java代码中构造这样的类.除了使用旧版OpenCV4Android之外的任何解决方案?

android opencv3.0 opencv4android

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

将 32FC3 转换为 8UC3 以在 OpenCV 中将图像另存为 jpg 时遇到问题

我正在阅读一系列 jpg,然后使用 OpenCV 的 convertTo(Mat, CV_32FC3) 函数来转换它们:

    Mat outImg = Mat.zeros(tmp.size(), CV_32FC3);
    Mat curImg = new Mat();

    for (int i = 0; i < imgCount; i++) {
        fname = fp + String.format("%02d", i) + ".jpg";
        curImg = imread(fname);
        curImg.convertTo(curImg, CV_32FC3);
        Imgproc.accumulateWeighted(curImg, outImg, 0.01);
    }

    outImg.convertTo(outImg, CV_8UC3, ?????);
    imwrite(fp + "output" + "-" + curTime + ".jpg", outImg);
Run Code Online (Sandbox Code Playgroud)

我想我必须先将它转换回 CV_8UC3,然后才能将其写入 jpg,但我不知道该怎么做。我发现了其他一些 SO 答案,说我需要通过将它乘以 255(convertTo() 中的第三个参数)来缩放它,但这样做会使输出完全变白。100 是一个更好的数字,但仍然有大量的剪辑(更不用说 255 是 8 位图片最合乎逻辑的数字)。这是正确的方法吗?如果没有,如何正确保存图像?

java opencv opencv4android

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

OpenCV4Android类Mat:width()和rows()之间的区别,以及height()和cols()之间的区别?

在OpenCV4Android中,方法width()和之间有什么区别rows(); 那些方法height()cols()类有Mat什么区别?

文件并没有说明这些方法的任何事情.

android opencv mat opencv3.0 opencv4android

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

建议发布CvCameraViewFrame inputFrame?

我正在使用的Android应用程序中工作JavaCameraView.所以在我的活动中我实施CvCameraViewListener2.

我的实现onCameraFrame()看起来像这样:

@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
    final Mat frame = inputFrame.rgba();
    return bs.process(frame);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果我发布,frame因为我不再使用它会不会很好?所以做这样的事情:

@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
    final Mat frame = inputFrame.rgba();
    Mat result = bs.process(frame);
    frame.release();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

android opencv opencv4android opencv3.1

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

使用Hough变换OpenCV Android进行矩形文档检测

我正在尝试使用opencv 4 android sdk检测矩形文档。首先我试图通过找到轮廓来检测它,但是它不能用于多彩色文档。您可以检查此链接以获得更好的主意: 使用OpenCV4Android检测多彩色文档

我进行了很多研究,发现可以使用houghline变换来完成它,因此我遵循以下方法来检测文档:

原始图像-> cvtColor->高斯模糊滤波器->对其进行扩张以锐化边缘->应用分水岭图像分割算法->具有动态otsu阈值的canny边缘检测->然后应用霍夫线变换

我为霍夫线变换所做的是:

Imgproc.HoughLinesP(watershedMat, lines, 1, Math.PI / 180, 50, 100, 50);

    List<Line> horizontals = new ArrayList<>();
    List<Line> verticals = new ArrayList<>();
    for (int x = 0; x < lines.rows(); x++)
    {
        double[] vec = lines.get(x, 0);
        double x1 = vec[0],
                y1 = vec[1],
                x2 = vec[2],
                y2 = vec[3];
        Point start = new Point(x1, y1);
        Point end = new Point(x2, y2);
        Line line = new Line(start, end);
        if (Math.abs(x1 - x2) > Math.abs(y1-y2)) …
Run Code Online (Sandbox Code Playgroud)

opencv edge-detection hough-transform opencv4android houghlinesp

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

Android OpenCV 纸张检测

我认为这个问题之前有人问过,但我没有找到解决我的问题的样本或解决方案。我是 opencv 的新手,我想使用 OpenCV CameraPreview 进行纸张检测。在我的示例应用程序中,我使用带有静态初始化的 opencv 3.0.0。我了解对象识别可以通过以下步骤完成:

  1. 制作输入图像 Canny
  2. 模糊 Canny 图像
  3. 在模糊的 Canny 图像上查找轮廓
  4. 搜索矩形等
  5. 绘制线条或用半透明颜色填充矩形

我的问题是现在我可以精明和模糊图像,但我不知道如何找到轮廓和矩形并用半透明颜色填充它们。

这是我当前的 onCameraFrame 函数:

@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
    Mat input = inputFrame.rgba();
    Mat output = input.clone();
    Imgproc.Canny(input, output, 50, 50);
    Imgproc.blur(output, output,new Size(5,5));
    //Find Contours
    //Search for biggest Contour/Rectangle
    //Fill Rectangle with half transparent Color
    return output;
}
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决纸张检测的问题并有一个android/java的代码示例?谢谢

android object-recognition opencv3.0 opencv4android

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