【问题标题】:Divide image into 8x8 block : Python将图像划分为 8x8 块:Python
【发布时间】:2014-12-11 19:46:53
【问题描述】:
import numpy as np
import numpy as numpy
import cv2

windowsize_r = 8
windowsize_c = 8

img = cv2.imread('image test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
for r in range(0,gray.shape[0] - windowsize_r, windowsize_r):
for c in range(0,gray.shape[0] - windowsize_c, windowsize_c):
    window = gray[r:r+windowsize_r,c:c+windowsize_c]
    hist = numpy.histogram(window,bins=256)
k = cv2.waitKey(0)
    if k == 27:
        cv2.destroyAllWindows()

我正在尝试将图像分成 8x8 块。我的图像尺寸是 320x240。所以最后应该有 1200 个块。我的代码没有显示任何错误,但没有观察到任何输出。任何人都可以提出更好的解决方案

【问题讨论】:

    标签: python image-processing


    【解决方案1】:

    在调用 waitKey 之前,您需要使用 cv2.imshow 实际显示补丁。例如:

    cv2.imshow('wind',window)
    cv2.waitKey(0)
    

    【讨论】:

    • 我试过这条评论,结果发现错误“mat is not a numeric tuple”
    • @user2231696 抱歉,我在 imshow 中放错了变量。您可以绘制图像区域 - 而不是直方图。如果要绘制直方图,请使用 matplotlib!
    • 感谢您的回答。但是情节将绘制直方图。我需要查看每个块的灰度。还有一个疑问,如果我们发出这样的命令,它会绘制完整的 1200 个块。我只想看一个街区
    • matplotlib.pyplot 中的 hist 函数绝对是你想要的。由你决定它的去向......
    • @Aswathy 我必须同意 John Greenall 的观点。 matplotlib 是一个非常通用的 pltting 库,可以与 numpy 很好地结合。 numpy.histogram() 返回一个直方图对象,而不是绘图。 Matplotlib 将为您绘制此图! (文档非常善于弄清楚如何)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多