我正在尝试在开车时检测视频中的车道线。我到达了对感兴趣区域应用Canny Edge检测的步骤。感兴趣的区域仅包含白线,黄线和街道(灰色)。现在,我需要遮盖感兴趣区域内的任何其他颜色,因为灰色有时会在边缘检测中中断其他颜色。然后,当我们在黄线和白线上应用“霍夫线”时,检测不准确。
那么,我该如何在图像上应用另一个蒙版,而不留下黄色和白色部分?
我正在将OpenCV用于Python的计算机视觉和图像处理功能。
答案 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)