检测图像中最常用的颜色

时间:2018-07-08 06:13:22

标签: python opencv

我正在尝试在开车时检测视频中的车道线。我到达了对感兴趣区域应用Canny Edge检测的步骤。感兴趣的区域仅包含白线,黄线和街道(灰色)。现在,我需要遮盖感兴趣区域内的任何其他颜色,因为灰色有时会在边缘检测中中断其他颜色。然后,当我们在黄线和白线上应用“霍夫线”时,检测不准确。

那么,我该如何在图像上应用另一个蒙版,而不留下黄色和白色部分?

我正在将OpenCV用于Python的计算机视觉和图像处理功能。

1 个答案:

答案 0 :(得分:1)

这里的代码使用了PIL和Scipy的群集程序包。

import struct
import Image
import numpy as np
import scipy
import scipy.misc
import scipy.cluster

NUM_CLUSTERS = 5

print 'reading image'
im = Image.open('image.jpg')
im = im.resize((150, 150))      # optional, to reduce time
ar = np.asarray(im)
shape = ar.shape
ar = ar.reshape(scipy.product(shape[:2]), shape[2]).astype(float)

print 'finding clusters'
codes, dist = scipy.cluster.vq.kmeans(ar, NUM_CLUSTERS)
print 'cluster centres:\n', codes

vecs, dist = scipy.cluster.vq.vq(ar, codes)         # assign codes
counts, bins = scipy.histogram(vecs, len(codes))    # count occurrences

index_max = scipy.argmax(counts)                    # find most frequent
peak = codes[index_max]
colour = ''.join(chr(int(c)) for c in peak).encode('hex')
print 'most frequent is %s (#%s)' % (peak, colour)