久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

OpenCV 更好地檢測紅色?

OpenCV better detection of red color?(OpenCV 更好地檢測紅色?)
本文介紹了OpenCV 更好地檢測紅色?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有以下圖片:

我想使用 cv::inRange 方法和 HSV 顏色空間檢測紅色矩形.

int H_MIN = 0;INT H_MAX = 10;int S_MIN = 70;INT S_MAX = 255;int V_MIN = 50;int V_MAX = 255;cv::cvtColor(輸入,imageHSV,cv::COLOR_BGR2HSV);cv::inRange(imageHSV, cv::Scalar(H_MIN, S_MIN, V_MIN), cv::Scalar(H_MAX, S_MAX, V_MAX), imgThreshold0);

我已經創建了動態軌跡欄以更改 HSV 的值,但我無法獲得所需的結果.

對使用的最佳值(可能還有過濾器)有什么建議嗎?

解決方案

在 HSV 空間中,紅色環繞大約 180.所以你需要 H 值在 [0,10] 和 [170, 180] 中.

試試這個:

#include 使用命名空間 cv;int main(){Mat3b bgr = imread("path_to_image");Mat3b hsv;cvtColor(bgr, hsv, COLOR_BGR2HSV);Mat1b 掩碼1、掩碼2;inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);Mat1b 掩碼 = 掩碼 1 |面具2;imshow("面具", 面具);等待鍵();返回0;}

您之前的結果:

結果添加范圍[170, 180]:

<小時>

另一種只需要檢查單個范圍的有趣方法是:

  • 反轉 BGR 圖像
  • 轉換為 HSV
  • 尋找青色顏色

這個想法由

I have the following image:

I would like to detect the red rectangle using cv::inRange method and HSV color space.

int H_MIN = 0;
int H_MAX = 10;
int S_MIN = 70; 
int S_MAX = 255;
int V_MIN = 50;
int V_MAX = 255;

cv::cvtColor( input, imageHSV, cv::COLOR_BGR2HSV );

cv::inRange( imageHSV, cv::Scalar( H_MIN, S_MIN, V_MIN ), cv::Scalar( H_MAX, S_MAX, V_MAX ), imgThreshold0 );

I already created dynamic trackbars in order to change the values for HSV, but I can't get the desired result.

Any suggestion for best values (and maybe filters) to use?

解決方案

In HSV space, the red color wraps around 180. So you need the H values to be both in [0,10] and [170, 180].

Try this:

#include <opencv2opencv.hpp>
using namespace cv;

int main()
{
    Mat3b bgr = imread("path_to_image");

    Mat3b hsv;
    cvtColor(bgr, hsv, COLOR_BGR2HSV);

    Mat1b mask1, mask2;
    inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);
    inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);

    Mat1b mask = mask1 | mask2;

    imshow("Mask", mask);
    waitKey();

    return 0;
}

Your previous result:

Result adding range [170, 180]:


Another interesting approach which needs to check a single range only is:

  • invert the BGR image
  • convert to HSV
  • look for cyan color

This idea has been proposed by fmw42 and kindly pointed out by Mark Setchell. Thank you very much for that.

#include <opencv2opencv.hpp>
using namespace cv;

int main()
{
    Mat3b bgr = imread("path_to_image");

    Mat3b bgr_inv = ~bgr;
    Mat3b hsv_inv;
    cvtColor(bgr_inv, hsv_inv, COLOR_BGR2HSV);

    Mat1b mask; 
    inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask); // Cyan is 90

    imshow("Mask", mask);
    waitKey();

    return 0;
}

這篇關于OpenCV 更好地檢測紅色?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Assertion failed (size.widthgt;0 amp;amp; size.heightgt;0)(斷言失敗(size.width0 amp;amp; size.height0))
Rotate an image in C++ without using OpenCV functions(在 C++ 中旋轉圖像而不使用 OpenCV 函數)
OpenCV: process every frame(OpenCV:處理每一幀)
Why can#39;t I open avi video in openCV?(為什么我不能在 openCV 中打開 avi 視頻?)
OpenCV unable to set up SVM Parameters(OpenCV 無法設置 SVM 參數)
Convert a single color with cvtColor(使用 cvtColor 轉換單一顏色)
主站蜘蛛池模板: 国产偷录叫床高潮录音 | 剑来高清在线观看 | 成年人在线视频 | 中文字幕av免费 | 亚洲精品一区二区久 | 性高湖久久久久久久久aaaaa | 欧美视频中文字幕 | av在线免费观看网址 | 精品国产91久久久久久 | 国产91在线 | 亚洲 | 国产在线中文字幕 | 国产三级精品三级在线观看四季网 | 亚洲欧洲综合av | av特级毛片 | 日韩在线免费 | 免费一区| 亚洲成人综合在线 | 97精品超碰一区二区三区 | 不卡一区二区三区四区 | 久久激情视频 | 午夜免费看 | 国产精品欧美一区二区三区不卡 | 日本三级在线网站 | 日韩播放| 欧美一级黄色片 | 亚洲精品一区二区三区丝袜 | 免费不卡av | 99精品视频免费在线观看 | 一区二区高清在线观看 | 国产乱码精品一区二三赶尸艳谈 | 欧洲成人午夜免费大片 | 国产一区影院 | 国产成人精品久久二区二区91 | 日韩一区二区久久 | 日韩人体视频 | 爱爱小视频 | 国产欧美日韩一区 | 日本超碰| 欧美一区二区三区视频在线播放 | 99re免费 | 九九看片|