【问题标题】:python2.7 - average of multiple opencv histogramspython2.7 - 多个opencv直方图的平均值
【发布时间】:2016-12-21 11:49:40
【问题描述】:

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

我需要做两件事: 1.计算多个图像的平均值 - 代表相似对象的多个图像,因此我想要该对象的“代表性”直方图(如果你有更好的想法,我愿意接受建议)以供将来比较。 2. 将直方图数据存储在我的 mongo db 中以供将来比较(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

提前致谢

【问题讨论】:

    标签: python-2.7 opencv numpy image-processing histogram


    【解决方案1】:

    由于 OpenCV(自 2.2 起)本机使用 numpy 数组,并且由于 len(images) 是常量,因此您可以通过以下方式在 mongo 中获得所有直方图和存储之间的平均值:

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

    我不知道这是否正是您想要的,但我希望它对您有所帮助!再见!

    【讨论】:

    • 谢谢!它的工作,我可以将一个 numpy 数组转换回 cv2 格式以使用它的比较
    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多