小编Ale*_*osi的帖子

在 OpenCV 中使用 inRange() 检测范围内的颜色

我正在用 OpenCV 编写一个用于月球陨石坑检测的 C++ 程序,它似乎只能准确地检测到一小部分陨石坑。我对这种方法的策略是首先将图像转换为 HSV,然后用于inRange()捕捉一系列值中的颜色以产生阈值,然后对其进行高斯模糊并用于HoughCircles()检测圆圈。

我不完全理解的一件事是,当我inRange()在颜色周围设置低阈值和高阈值时,它根本不会返回任何内容。只是一个黑色的图像。它仅在我将低阈值设置为时才有效,Scalar(0,0,0)但我认为这会使其有些不准确。有什么我不明白的吗?我的测试图像如下。

月球表面 在此处输入图片说明

这是我用来测试此图像的代码:

#include <cstdio>
#include <iostream>

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/features2d/features2d.hpp"

using namespace std;
using namespace cv;

int main(int argc, char** argv) {
    // using namespace cv;

    printf("%s\n", argv[1]);
    Mat src=imread(argv[1]);

    if (!src.data) {
        std::cout << "ERROR:\topening image" <<std::endl;
        return -1;
    }

    // converts the image to hsv so that circle detection is more accurate
    Mat hsv_image;
    cvtColor(src, hsv_image, COLOR_BGR2HSV);
    // high …
Run Code Online (Sandbox Code Playgroud)

c++ opencv feature-detection hough-transform

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

标签 统计

c++ ×1

feature-detection ×1

hough-transform ×1

opencv ×1