Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OpenCV中使用inRange执行精确的阈值_Opencv_Mask_Image Recognition_Hsv - Fatal编程技术网

如何在OpenCV中使用inRange执行精确的阈值

如何在OpenCV中使用inRange执行精确的阈值,opencv,mask,image-recognition,hsv,Opencv,Mask,Image Recognition,Hsv,我正在尝试使用inRange函数执行阈值化,以创建游戏中项目的白色遮罩,用于功能检测。我目前正在使用带有轻微高斯模糊的inRange函数来去除噪声,试图完全屏蔽图像中的项目 与硬编码HSV值相比,是否有更自适应的阈值化方法?我对OpenCV比较陌生,我想知道是否有更有效/精确的方法来执行此任务 下面是我的代码,介绍了我目前如何通过阈值执行操作,以及我的结果 Mat mask, scene; scene = imread("./inGameWeapon.png&quo

我正在尝试使用inRange函数执行阈值化,以创建游戏中项目的白色遮罩,用于功能检测。我目前正在使用带有轻微高斯模糊的inRange函数来去除噪声,试图完全屏蔽图像中的项目

与硬编码HSV值相比,是否有更自适应的阈值化方法?我对OpenCV比较陌生,我想知道是否有更有效/精确的方法来执行此任务

下面是我的代码,介绍了我目前如何通过阈值执行操作,以及我的结果

    Mat mask, scene; 
    scene = imread("./inGameWeapon.png");
    resize(scene, scene, Size(), (270.0 / scene.rows), (270.0 / scene.cols));
    cv::GaussianBlur(scene, scene, cv::Size(5, 5), 0);
    cvtColor(scene, scene, COLOR_BGR2HSV);
    inRange(scene, Scalar(0, 50, 0), Scalar(200, 92, 100), mask); //Remove blue background
    imshow("Threshold", mask);

如果你不能硬核,你将不得不识别/检测/找到范围。一种方法是在使用硬编码阈值之前对图像进行标准化