0
我正在處理視頻圖像,我想檢測視頻是否包含某個紅色範圍內的任何像素。這可能嗎?OpenCV:我如何解釋inRange的結果?
這裏是我從一個教程適應代碼:
#ifdef __cplusplus
- (void)processImage:(Mat&)image;
{
cv::Mat orig_image = image.clone();
cv::medianBlur(image, image, 3);
cv::Mat hsv_image;
cv::cvtColor(image, hsv_image, cv::COLOR_BGR2HSV);
cv::Mat lower_red_hue_range;
cv::Mat upper_red_hue_range;
cv::inRange(hsv_image, cv::Scalar(0, 100, 100), cv::Scalar(10, 255, 255), lower_red_hue_range);
cv::inRange(hsv_image, cv::Scalar(160, 100, 100), cv::Scalar(179, 255, 255), upper_red_hue_range);
// Interpret values here
}
解釋值
我想檢測是否從INRANGE操作的結果是零或不是。換句話說,我想了解原始圖像中是否有匹配的像素,並且顏色inRange是從給定的較低和較高的紅色比例中獲得的。我怎樣才能解釋結果?
首先,你需要OR或下面罩和上面罩。然後你可以「計數非零」來查看是否有非零像素(即你找到了某種東西)。首先應用形態學侵蝕或開放來刪除小(可能是噪音)的斑點或找到連接的組件('findContours','connectedComponentsWithStats')並根據某些標準修剪/搜索可能會更好 – Miki
謝謝。我知道這是蹩腳的,但你能否添加一些示例代碼?這是我第一次OpenCV測試項目,我正在努力在如此短的時間內熟悉所有這些功能和概念。 – mm24
我發佈了一個答案。這應該讓你開始。如果您有更精確的要求,請將它們添加到您的問題中,我會盡量做出更準確的答案。 – Miki