Проанализируйте изображение в определенной области и определите, является ли оно красным, используя Opencv Python - PullRequest
0 голосов
/ 16 мая 2018

Я использую Opencv Python в Raspberry Pi, чтобы проанализировать тепловую карту, я ищу красный цвет, который представляет самую высокую температуру, мне нужно определить, существует ли в определенной области красный цвет, если онмогу использовать эту информацию для активации условия, я использую тепловую карту, например: enter image description here

для определения красного цвета, я использую этот код:

import cv2
import numpy as np

while(1):

    # Take each frame

    frame = cv2.imread('heatmap.png')

    # Convert BGR to HSV
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # define range of blue color in HSV
    lower_red = np.array([-20, 100, 100])
    upper_red = np.array([13, 255, 255])

    # Threshold the HSV image to get only blue colors
    mask = cv2.inRange(hsv, lower_red, upper_red)


    # Bitwise-AND mask and original image
    res = cv2.bitwise_and(frame,frame, mask= mask)

    cv2.imshow('heatmap',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break

cv2.destroyAllWindows()

приведенный выше код дает мне все пиксели красного цвета, но мне нужно определить, является ли контур тепловой карты красным, я имею в виду, что контур или граница изображения будут красного цвета, а не разрешенной области, кто-нибудь, как я могу это сделать?

1 Ответ

0 голосов
/ 16 мая 2018

Ваш диапазон HSV не верен.Для красного (0,20,20)~(8,255,255), (170,20,20) ~ (180,255,255).


Вот мой результат:

enter image description here


Код:

#!/usr/bin/python3
# 2018/05/16 13:54:09 
import cv2
import numpy as np

img = cv2.imread('heatmap.png')
# Convert BGR to HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask1 = cv2.inRange(hsv, (0,20,20), (8,255,255))
mask2 = cv2.inRange(hsv, (170,20,20), (180,255,255))
mask = cv2.bitwise_or(mask1, mask2)
dst  = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow("dst", dst)
cv2.imwrite("__.png", dst)
cv2.waitKey()

Некоторые полезные ссылки:

  1. Выбор правильной верхней и нижней границ ВПГ для определения цвета с помощью `cv :: inRange` (OpenCV)
  2. Как определить пороговое значение для обнаружения на изображении только объектов зеленого цвета: Opencv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...