opencv - 使用 scikit-image/opencv 获取蓝色轮廓

标签 opencv scikit-image

我正在尝试使用 scikit-image 获得蓝色轮廓。我确定 opencv 中有一些函数在 scikit-image 中也可用。

我知道 find_contours 方法效果很好,但它可以获取轮廓的所有颜色。我只是想获得蓝色轮廓。

http://scikit-image.org/docs/dev/api/skimage.measure.find_contours.html

关于如何做到这一点的任何想法?我的猜测是以某种方式预处理图像以去除蓝色以外的所有颜色。

最佳答案

您关于首先抑制所有其他颜色的建议很好。这是执行此操作的一些代码:

from skimage import io, color, exposure, img_as_float
import matplotlib.pyplot as plt

# http://www.publicdomainpictures.net/view-image.php?image=26890&picture=color-wheel
image = img_as_float(io.imread('color-wheel.jpg'))

blue_lab = color.rgb2lab([[[0, 0, 1.]]])
light_blue_lab = color.rgb2lab([[[0, 1, 1.]]])
red_lab = color.rgb2lab([[[1, 0, 0.]]])
image_lab = color.rgb2lab(image)

distance_blue = color.deltaE_cmc(blue_lab, image_lab, kL=0.5, kC=0.5)
distance_light_blue = color.deltaE_cmc(light_blue_lab, image_lab, kL=0.5, kC=0.5)
distance_red = color.deltaE_cmc(red_lab, image_lab, kL=0.5, kC=0.5)
distance = distance_blue + distance_light_blue - distance_red
distance = exposure.rescale_intensity(distance)

image_blue = image.copy()
image_blue[distance > 0.3] = 0

f, (ax0, ax1, ax2) = plt.subplots(1, 3, figsize=(20, 10))
ax0.imshow(image)
ax1.imshow(distance, cmap='gray')
ax2.imshow(image_blue)
plt.show()

Color selection

关于opencv - 使用 scikit-image/opencv 获取蓝色轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21618252/

相关文章:

python - libc++abi.dylib : terminating with uncaught exception of type NSException

python - 在/tmp/pip-build-rnhk49o3/opencv-python/中,命令 "python setup.py egg_info"失败,错误代码为1

python - 哪个 SSIM 是正确的 : skimage.metrics.structural_similarity()?

python - 比较python中的LBP

python - Scikit-图像和中心矩: what is the meaning?

c++ - 是否需要注意非错误提示?好像找不到包 ‘***’?

opencv - pyopencv 绘制轮廓

python - 使用 OpenCV 和 Python 保存多张图像

python - 复制 numpy 数组值时获取图片的负片

python - 如何在Python中找到GLCM矩阵?