【发布时间】: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