Python 2.7 - python2.7 -多个opencv直方图的平均值



我使用python2.7 opencv库来计算一些图像的直方图,所有图像的大小都完全相同(cv2.calchist)

我需要做两件事:1. 计算多个图像的平均值——多个图像代表一个相似的对象,因此我想要一个该对象的"代表性"直方图(如果你有更好的主意,我愿意接受建议),以便将来进行比较。2. 将直方图数据存储在mongo数据库中,以便将来进行比较(cv2相关性)

我看到的唯一与问题相关的代码是我的histogram_comparison代码:

def histogram_comparison(real, fake):
images = [real, fake]
index = []
for image in images:
    image = image.decode('base64')
    image = np.fromstring(image, dtype=np.uint8)
    image = cv2.imdecode(image, 1)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    hist = cv2.calcHist([image], [0, 1, 2], None, [32, 32, 32],
                        [0, 256, 0, 256, 0, 256])
    hist = cv2.normalize(hist).flatten()
    index.append(hist)
result_dist = cv2.compareHist(index[0], index[1], cv2.cv.CV_COMP_CORREL)
return round(result_dist, 5)

取自:http://www.pyimagesearch.com/2014/07/14/3-ways-compare-histograms-using-opencv-python/

我确实意识到,当使用numpy的(或者是scipy?)直方图时,有一种简单的方法可以获得bin并平均它们,但是我不确定如何比较直方图,所以我宁愿使用opencv

thanks in advance

由于OpenCV(自2.2起)原生使用numpy数组,并且由于len(images)是常量,您可以通过简单的方法获得mongo中所有直方图和存储之间的平均值:

h, b = np.histogram(images, bins=[0, 256])
db.histograms.insert({hist:(h/len(images)), bins:b })

我不知道它是否正是你想要的,但我希望它能帮助!再见!

相关内容

  • 没有找到相关文章

最新更新