我正在研究图像处理特征提取。我有一张鸟的照片,我必须在其中提取鸟类区域并告诉鸟的颜色。我使用精明的特征提取方法来获取鸟的边缘。
如何只提取鸟类区域并将背景设为蓝色?
openCv 解决方案也应该没问题。
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)
from skimage import feature
edges = feature.canny(bird,sigma=1)
plt.imshow(edges )
实际的鸟图可以来自bird link
最佳答案
Binarize the image通过自动阈值
使用contour detection识别黑色区域which are inside a white region并将它们与白色区域合并。 (样机,图片可能略有不同)
如您所见,该方法远非完美,但应该能让您大致了解如何完成任务。最终的图像质量可能会通过稍微腐 eclipse map 以将其收紧到鸟的轮廓来提高。然后,您还可以使用 mask 通过仅考虑前景像素来计算颜色直方图。 编辑:看这里:
- 最终图片
关于python - 特征提取并取颜色直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52153979/