python - 特征提取并取颜色直方图

标签 python opencv image-processing scikit-learn scikit-image

我正在研究图像处理特征提取。我有一张鸟的照片,我必须在其中提取鸟类区域并告诉鸟的颜色。我使用精明的特征提取方法来获取鸟的边缘。

如何只提取鸟类区域并将背景设为蓝色?

openCv 解决方案也应该没问题。

enter image description here

import skimage
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt

import os
filename = os.path.join(os.getcwd(),'image\image_bird.jpeg')
from skimage import io
bird =io.imread(filename,as_grey=True)
plt.imshow(bird)

enter image description here

from skimage import feature
edges = feature.canny(bird,sigma=1)
plt.imshow(edges )

enter image description here

实际的鸟图可以来自bird link

最佳答案

  1. Identify the edges您的图像Sobel edge map

  2. Binarize the image通过自动阈值 binarized edge map

  3. 使用contour detection识别黑色区域which are inside a white region并将它们与白色区域合并。 (样机,图片可能略有不同)Mockup of the merged mask

  4. 使用创建的图像作为蒙版为背景着色并着色 final image这可以通过简单地将每个背景像素(黑色)设置为其各自的颜色来完成。

如您所见,该方法远非完美,但应该能让您大致了解如何完成任务。最终的图像质量可能会通过稍微腐 eclipse map 以将其收紧到鸟的轮廓来提高。然后,您还可以使用 mask 通过仅考虑前景像素来计算颜色直方图。 编辑:看这里:

  1. Eroded mask

eroded mask

  1. 最终图片

Final image with eroded mask

关于python - 特征提取并取颜色直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52153979/

相关文章:

Python 查找包内的所有包,即使在鸡蛋中也是如此

python 我该如何调试这个 ImportError No module

python - celery 中@task装饰器之后的装饰器

来自一系列图像的python 16位灰度视频

windows - 在 Windows 上将 OpenCV 与 Clion IDE 结合使用

python - 当两个不同的规则路径可以生成给定的输出时,snakemake 能否避免歧义?

python - 无法在 OpenCV 中更改框架高度和宽度

matlab - 我可以做些什么来提高我的图像质量?

opencv - 查找图像中指向一个方向的所有线

ios - 保存为 GIF 后图像质量下降