首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特征提取和颜色直方图提取

特征提取和颜色直方图提取
EN

Stack Overflow用户
提问于 2018-09-03 17:14:10
回答 2查看 6.2K关注 0票数 20

我正在做一个图像处理特征提取。我有一张鸟的照片,在这张照片里,我必须提取鸟的区域,并告诉它有什么颜色。我用精明的特征提取方法来提取鸟的边缘。

如何只提取鸟的区域并使背景变成蓝色?

openCv解决方案也应该很好.

代码语言:javascript
复制
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)

代码语言:javascript
复制
from skimage import feature
edges = feature.canny(bird,sigma=1)
plt.imshow(edges )

实际的鸟类图像可以从鸟链中获取

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-04 13:55:26

  1. 你的图像的识别边缘

  1. 图像二值化自动阈值化

  1. 使用轮廓检测标识黑色区域在白色区域内并将它们与白色区域合并。(模型,图像可能略有变化)

  1. 使用创建的图像作为掩码,对背景进行着色并对其进行着色。

这可以通过简单地将每个背景像素(黑色)设置为其各自的颜色。

正如您所看到的,这种方法远非十全十美,但应该给您一个关于如何完成任务的总体想法。最后的图像质量可能会通过稍微侵蚀地图来将其收紧到鸟的轮廓上而得到改善。然后,您还使用掩码来计算您的颜色直方图,只考虑前景像素。编辑:看这里:

  1. 腐蚀掩模

  1. 最终图像

票数 23
EN

Stack Overflow用户

发布于 2018-09-07 15:09:57

根据本文,https://www.pyimagesearch.com/2016/04/11/finding-extreme-points-in-contours-with-opencv/和这个问题CV -提取两幅图像的差异

我编写了一些python代码如下所示。正如我的前任所说,这也远不是完美的。此代码的主要缺点是要手动设置常量值: minThres (50)、maxThres(100)、扩展迭代计数和腐蚀迭代计数。

代码语言:javascript
复制
import cv2
import numpy as np

windowName = "Edges"
pictureRaw = cv2.imread("bird.jpg")

## set to gray
pictureGray = cv2.cvtColor(pictureRaw,  cv2.COLOR_BGR2GRAY)

## blur
pictureGaussian = cv2.GaussianBlur(pictureGray, (7,7), 0)

## canny edge detector - you must specify threshold values
pictureCanny = cv2.Canny(pictureGaussian, 50, 100)

## perform a series of erosions + dilations to remove any small regions of noise
pictureDilate = cv2.dilate(pictureCanny, None, iterations=20)
pictureErode = cv2.erode(pictureDilate, None, iterations=5)

## find the nozero regions in the erode
imask2 = pictureErode>0

## create a Mat like pictureRaw
canvas = np.full_like(pictureRaw, np.array([255,0,0]), dtype=np.uint8)

## set mask 
canvas[imask2] = pictureRaw[imask2]
cv2.imwrite("result.png", canvas)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52153979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档