【问题标题】:OpenCV filter image by red and greenOpenCV通过红绿过滤图像
【发布时间】:2020-11-21 23:50:30
【问题描述】:

我想将下面的图像过滤成绿色和红色。过滤图像的目的是能够计算图像中的红色和绿色细胞。我正在使用 OpenCV 过滤图像,但结果与预期不符,请查看红色和绿色过滤器中的图像。过滤后的图像似乎包含更多颜色的单元格,这将导致计数不正确。请问我可以在代码中做些什么来改进这一点吗?非常感谢。

import cv2

image = cv2.imread('2020-03-Sequence-p4-Day-0_Position070.png')

b = image.copy()
# set green and red channels to 0
b[:, :, 1] = 0
b[:, :, 2] = 0


g = image.copy()
# set blue and red channels to 0
g[:, :, 0] = 0
g[:, :, 2] = 0

r = image.copy()
# set blue and green channels to 0
r[:, :, 0] = 0
r[:, :, 1] = 0


# RGB - Blue
cv2.imshow('B-RGB', b)

# RGB - Green
cv2.imshow('G-RGB', g)

# RGB - Red
cv2.imshow('R-RGB', r)

cv2.waitKey(0)

原创图片 转换图像

【问题讨论】:

  • 对我来说看起来是绿色和红色......有什么问题?
  • 看看这里...stackoverflow.com/a/50215020/2836621,对于红军来说,这里...stackoverflow.com/a/58082661/2836621
  • 您将其他通道设置为 0,这意味着即使它之前没有占据主导地位,现在也会占据主导地位。相反,我建议仅将蓝色和绿色小于红色的像素设置为 0,将红色设置为 0,然后将绿色设置为 0。
  • 除此之外,您还设置了一个阈值,例如 128 或其他东西,以确保只显示红色的,然后您可以计算。

标签: python opencv image-processing computer-vision


【解决方案1】:

你的意思是这样的:

import cv2
import numpy as np

## Read
img = cv2.imread("img.jpg")

## convert to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

mask_green = cv2.inRange(hsv, (36, 25, 25), (70, 255,255))
mask_red1 = cv2.inRange(hsv, (0, 70, 50), (10, 255, 255))
mask_red2 = cv2.inRange(hsv, (170, 70, 50), (180, 255, 255))
mask_orange = cv2.inRange(hsv, (10, 100, 20), (25, 255, 255))
mask_yellow = cv2.inRange(hsv, (21, 39, 64), (40, 255, 255))

## slice the red and orange
imask_red1 = mask_red1>0
imask_red2 = mask_red2>0
imask_orange = mask_orange>0
imask_yellow = mask_yellow>0
red = np.zeros_like(img, np.uint8)
red[imask_red1] = img[imask_red1]
red[imask_red2] = img[imask_red2]
red[imask_orange] = img[imask_orange]
red[imask_yellow] = img[imask_yellow]

## slice the green
imask_green = mask_green>0
green = np.zeros_like(img, np.uint8)
green[imask_green] = img[imask_green]

## save 
cv2.imwrite("green.jpg", green)
cv2.imwrite("red.jpg", red)

一些绿色被带入红色版本,我想你可以调整 hsv 范围来解决这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多