分析特定区域内的图像并确定其是否';使用opencvpython创建红色

分析特定区域内的图像并确定其是否';使用opencvpython创建红色,python,opencv,raspberry-pi,heatmap,color-detection,Python,Opencv,Raspberry Pi,Heatmap,Color Detection,我在raspberry pi中使用Opencv python来分析热图,我在寻找代表最高温度的红色,我需要检测特定区域是否存在红色,如果存在,我可以使用此信息激活条件,我使用的热图如下: 对于红色检测,我使用以下代码: import cv2 import numpy as np while(1): # Take each frame frame = cv2.imread('heatmap.png') # Convert BGR to HSV hsv =

我在raspberry pi中使用Opencv python来分析热图,我在寻找代表最高温度的红色,我需要检测特定区域是否存在红色,如果存在,我可以使用此信息激活条件,我使用的热图如下:

对于红色检测,我使用以下代码:

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()

上面的代码给了我所有的红色像素,但我需要确定热图轮廓是否为红色,我的意思是图像轮廓或边框将是一个红色的不允许区域,有人知道我该怎么做吗?

您的HSV范围不正确。对于红色,
(0,20,20)~(8255255),(170,20,20)~(180255255)


以下是我的结果:


守则:

#!/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()
一些有用的链接:


  • 非常感谢你,我还问你一件事,你知道如何确定红色点的坐标吗??所以我可以在if中使用这些信息