C ++ OpenCV Color Thersholding HSV图像错误

时间:2017-09-16 22:35:27

标签: c++ opencv hsv

所以基本上我试图使用Canny边缘检测和颜色阈值来检测绿色目标。如下所示的原始图像是我试图检测的一个例子。

原始图片:

Original Image

应用canny边缘检测后,就会出现这种情况。

CannyEdge图片:

CannyEdge Image

从这里我想只显示绿色矩形目标,所以我使用inRange函数并输入从该图片中某个绿色目标的GIMP获得的HSV范围。然而,我将Hue值除以2,因为我听说OpenCV使用Hue值0 - 180不像GIMP使用0 - 360并且仍然以inRange函数的黑色输出图像结束....

如何只显示绿色矩形?

#include <opencv2/opencv.hpp>
#include <iostream>


using namespace cv;

Mat ORIGINAL_img;
Mat HSV_img, FINAL_img, MASKED_img, BLURRED_img;

Mat dst, detectededges;





int main() {


    ORIGINAL_img = imread("straight7.jpg", CV_LOAD_IMAGE_COLOR);


    cvtColor(ORIGINAL_img, HSV_img, COLOR_BGR2HSV);
    inRange(HSV_img, Scalar(80, 150, 15), Scalar(100, 255, 60), MASKED_img);
    blur(MASKED_img, BLURRED_img, Size(3,3));
    Canny(BLURRED_img, detectededges, 50, 20, 3);
    dst = Scalar::all(0);
    HSV_img.copyTo(dst, detectededges);


    imwrite("cannyoutput.jpg", dst);
    imwrite("colormaskoutput.jpg", MASKED_img);


    //imshow("color", HSV_img);
    waitKey(0);

    return 0;
}

0 个答案:

没有答案