繁体   English   中英

分析图像中的主色时删除背景色(python,OpenCV)

Removing background color(s) from when analysing dominant colors in an image (python, OpenCV)

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在使用https://www.pyimagesearch.com/2014/05/26/opencv-python-k-me-color-clustering/中的出色代码(这不是我的!)。

我要解决的是,在绘制颜色时要删除某些颜色-在这种情况下,我要在绘制直方图时去除/不测量玩具的白色背景。 在其他情况下,当使用透明背景时,它会拉动灰色/白色选中的背景(例如https://i.stack.imgur.com/WLjsK.png ),因此我想同时移动这两种“颜色”。

有人可以请我朝着解决这个问题的正确方法前进吗?

非常感谢!!

import cv2
import numpy as np
from sklearn import metrics
import matplotlib.pyplot as plt

!wget "https://www.beatrix-potter-shop.co.uk/app/uploads/2017/07/PO1424_Benjamin.jpg"

# Load the image
image = cv2.imread("PO1424_Benjamin.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 

# Resize it for efficiency (color ratios are the same)
h, w, _ = image.shape
w_new = int(100 * w / max(w, h) )
h_new = int(100 * h / max(w, h) )

image = cv2.resize(image, (w_new, h_new));

# Step 1: Clustering colours with K-Means
from sklearn.cluster import KMeans

# Reshape the image to be a list of pixels
image_array = image.reshape((image.shape[0] * image.shape[1], 3))

# Clusters the pixels
clt = KMeans(n_clusters = 7)
clt.fit(image_array)

# By Adrian Rosebrock
def centroid_histogram(clt):
 # grab the number of different clusters and create a histogram
 # based on the number of pixels assigned to each cluster
 numLabels = np.arange(0, len(np.unique(clt.labels_)) + 1)
 (hist, _) = np.histogram(clt.labels_, bins = numLabels)

 # normalize the histogram, such that it sums to one
 hist = hist.astype("float")
 hist /= hist.sum()

 # return the histogram
 return hist

# Finds how many pixels are in each cluster
hist = centroid_histogram(clt)

# Sort the clusters according to how many pixel they have
zipped = list(zip(hist, clt.cluster_centers_))
zipped.sort(reverse=True, key=lambda x : x[0])
hist, clt.cluster_centers = zip(*zipped)

def plot_colors(hist, centroids):
    # initialize the bar chart representing the relative frequency
    # of each of the colors
    bar = np.zeros((50, 300, 3), dtype = "uint8")
    startX = 0

    # loop over the percentage of each cluster and the color of
    # each cluster
    for (percent, color) in zip(hist, centroids):
        # plot the relative percentage of each cluster
        endX = startX + (percent * 300)
        cv2.rectangle(bar, (int(startX), 0), (int(endX), 50),
            color.astype("uint8").tolist(), -1)
        startX = endX

    # return the bar chart
    return bar

# build a histogram of clusters and then create a figure
# representing the number of pixels labeled to each color
hist = centroid_histogram(clt)
bar = plot_colors(hist, clt.cluster_centers_)

# show our color bart
plt.figure()
plt.axis("on")
plt.imshow(bar)
plt.show()
问题暂未有回复.您可以查看右边的相关问题.
1 从图像中删除背景色

我对图像处理有一个疑问,我被要求编程以去除图像的背景色,以便仅保留前景对象,但是,如果我想使用它,我将完全不知道如何启动它JavaScript,有什么提示吗? 还是我应该使用更好的编码语言? 干杯。 ...

3 悬停在背景色上时如何使背景色覆盖整个“色块”

我正在学习CSS,并且试图从此网站复制一个简单的导航栏。 我希望将鼠标悬停在某个项目上时出现黑色背景,所以我这样做了: 但背景仅覆盖文字。 我希望它像原始站点一样覆盖整个元素。 如果需要,这是锚标记CSS: ...

2015-08-18 21:01:01 2 571   css/ hover
5 带有图像的按钮:删除背景色

我想在带有文字的按钮中放置图片,而我已经拥有了。 但是问题是我的图像带有一些我想删除的“灰色背景色”(如下所示)。 在正常情况下,我将使用android:background="@null"并解决该问题,但我将按钮模板用作背景。 有谁知道从图像中删除该灰色背景色的其他方法吗? ...

2015-05-15 20:58:02 4 649   android
6 在Ruby中基于背景色反转前色(文本颜色)

我想根据Ruby中的背景颜色hex选择文本颜色。 例如: 用户输入了此背景色: 然后, 预期的文本颜色应为白色#FFFFFF (白色)。 如果用户选择与此类似的内容: 然后, 预期的文字颜色应为#000000 (黑色) 我知道这是可能的,并且我发现了其 ...

2019-03-24 09:52:24 2 34   ruby
7 在JavaFX中添加图像时如何保持背景色?

我正在编写一个JavaFX程序来下棋。 当前,我正在使用JavaFX Rectangle类并将它们设置为深色和浅色。 但是,当我添加图像时,即使我有意找到背景清晰的图像,它也会清除整个背景。 目前,我用于将图像放置在矩形上的代码是: 在这种情况下,图像是我想要的图像。 我是否需要 ...

8 改变中 悬停在图像上时的背景色

我正在寻找本主题中描述的功能。 当用户将鼠标悬停在图像(id =“ sie”)上时,表格单元格(id =“ sein_img”)的背景应更改。 我尝试使用此代码,但不确定为什么它不起作用。 帮助将不胜感激! ...

10 2背景色与图像

我正在尝试对图像使用两种背景色(黑色和灰色)。 黑色是可以的,图像也可以。 但是缺少灰色... 我的积木有问题吗? 谢谢 .image-item-2-03{ float: left; height: 390px; object-fit: cover; widt ...

2019-03-31 18:21:35 3 54   css
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM