我可以将颜色变成其他颜色吗?

时间:2017-08-24 22:35:21

标签: c++ opencv

我可以将黑色改为其他颜色吗?

我被区域使用这段代码:

void MainWindow::division_image_level1()
{
    ROI_Vertices1.clear();
    ROI_Vertices1.push_back(Point(196,40));   
    ROI_Vertices1.push_back(Point(47,450));
    ROI_Vertices1.push_back(Point(204,450)); 
    ROI_Vertices1.push_back(Point(275,40));

    Mat mask1(m_WebcamRead.size(), CV_8UC1, Scalar::all(0));

    approxPolyDP(ROI_Vertices1, ROI_Poly1, 1.0, true);

    fillConvexPoly(mask1, &ROI_Poly1[0], ROI_Poly1.size(), 255, 8, 0);

    Mat cut_image1(ROI_Poly1.size(), ROI_Poly1.size(), CV_8UC4);

    m_WebcamRead.copyTo(cut_image1, mask1);

    namedWindow("cnt_line_1");
    imshow("cnt_line_1",cut_image1);
    cnt_line_1 = detect_line(cut_image1);
    std::cout <<"cnt_line_1 : "<<cnt_line_1 <<std::endl;
}

我会称这个区域是“我的区域”。和其他领域是背景区&#39;

int MainWindow::detect_line(Mat detected_image)         
{
    Mat HSV;
    cvtColor(detected_image, HSV, CV_BGR2HSV);
    cv::Scalar hsv_user_low(0, 0, 0);
    cv::Scalar hsv_user_high(150, 150, 150);
    inRange(HSV,hsv_user_low,hsv_user_high,HSV);
    int cnt_line=0;
    cnt_line= countNonZero(HSV);       
    return cnt_line;
}

当黑色进入&#39;我的区域时,我希望得到一个信号。 但detect_line功能始终实现&#39;背景区域&#39;颜色是黑色。 我希望detect_line函数知道这两者之间的区别。 我该怎么办? (我如何更改&#39;背景区域&#39;颜色黑色为白色?)

0 个答案:

没有答案