相关疑难解决方法(0)

检查图像与OpenCV的相似性

OpenCV是否支持两个图像的比较,返回一些值(可能是百分比),表示这些图像有多相似?例如,如果相同的图像被传递两次将返回100%,如果图像完全不同则将返回0%.

我已经在StackOverflow上阅读了很多类似的主题.我也做了一些谷歌搜索.可悲的是,我无法想出一个令人满意的答案.

comparison opencv image similarity

133
推荐指数
5
解决办法
14万
查看次数

在Android中与ORB匹配时出错

我的代码运行良好,但是当它提取关键点时,它与两个图像匹配得很差.在这里你可以找到我的代码,但我不知道如何绘制好的匹配JAVA Android

 descriptors = new Mat();
        keypoints = new MatOfKeyPoint();
        detector = FeatureDetector.create(FeatureDetector.ORB);
        detector.detect(img1, keypoints);
        descriptor = DescriptorExtractor.create(DescriptorExtractor.ORB);
        descriptor.compute(img1, keypoints, descriptors);
        matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING);
     ColorDetection.cvt_YUVtoRGBtoHSV(mYuv,mGraySubmat);
          MatOfKeyPoint mKeyPoints = new MatOfKeyPoint();
        MatOfDMatch  matches = new MatOfDMatch();

          detector.detect(mGraySubmat, mKeyPoints);
          descriptor.compute(mGraySubmat, mKeyPoints, mIntermediateMat);

        matcher.match(mIntermediateMat,descriptors,matches);
        mIntermediateMat2.create(resultSize, CvType.CV_8UC1);
        Features2d.drawMatches(img1, keypoints, mGraySubmat, mKeyPoints, matches, 
                mIntermediateMat2,GREEN, RED,  MATCH_MASK, Features2d.NOT_DRAW_SINGLE_POINTS);

          Imgproc.resize(mIntermediateMat2, mIntermediateMat2, mRgba.size());
          Imgproc.cvtColor(mIntermediateMat2, mRgba, Imgproc.COLOR_RGBA2BGRA, 4);
     Utils.matToBitmap(mRgba, bmp);

      DMatch dm[] = matches.toArray();
          List<Point> lp1 = new ArrayList<Point>(dm.length);
          List<Point> lp2 = new ArrayList<Point>(dm.length);
          KeyPoint tkp[] = keypoints.toArray(); …
Run Code Online (Sandbox Code Playgroud)

android opencv

9
推荐指数
2
解决办法
9272
查看次数

Android OpenCV:绘图与feature2d匹配

我无法使用此功能.基本上我正在进行特征检测并与参考图像匹配.我想在输入图像上叠加匹配的要素.这是我的代码:

public Mat startProcessing(Mat inputImage) {

    Imgproc.cvtColor(inputImage, rgb, Imgproc.COLOR_GRAY2RGB);
    myFeatures.detect(rgb, keypoints);
    descriptorExtractor.compute(inputImage, keypoints, imageDescriptors);
    descriptorMatcher.match(templateDescriptors, imageDescriptors, matches);

    Features2d.drawMatches(rgb, keypoints, templateImage, templateKeypoints, matches, rgb); 

    Imgproc.cvtColor(rgb, outputImage, Imgproc.COLOR_RGB2RGBA);
    return outputImage;
}
Run Code Online (Sandbox Code Playgroud)

这是Features2d.drawMatches,这是特别的问题.根据我得到的Android错误,一些维度没有排队.说实话,我甚至不确定如何drawMatches在Android上运行,因为在任何地方都没有文档.

我想要做的是在inputImage上绘制匹配项.我已经Feature2d.drawKeypoints开始工作,但我不确定如何转换MatOfDMatch matchesMatOfKeypoint对象.此外,我甚至不确定MatOfDMatch是如何工作的 - 它是否与描述符对应的内部有一些关联性?

对不起,到处都是,我很难在Android上使用OpenCV.那里的C++文档很好,但Android材料的方式却很少.谢谢你的帮助!

java android opencv

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

如何改进opencv中的特征检测

我正在开发一个项目,我需要使用opencv检测图像上的功能.

我在用

SURF detector;
SURF extractor;
BFMatcher matcher;
Run Code Online (Sandbox Code Playgroud)

用于检测,提取和匹配点.它适用于某些图像,但在其他图像上失败.

例如,系统在此映像上失败:

在此输入图像描述

显然,此图像具有一些纹理,并且特征检测器应检测它们,但未检测到任何特征,因此不会生成匹配.

如何改进此功能检测?

我可以使用任何图像处理技术吗?

我可以使用哪种其他探测器来帮助解决这个问题?

c++ opencv image-processing feature-extraction feature-detection

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