【发布时间】:2015-02-18 18:50:43
【问题描述】:
我正在尝试定义一个扫描图像的窗口,我想找到每个窗口中的平均 RGB 值并输出它们。
我设法得到了整个图像的平均 RGB 值,如下所示:
img = cv2.imread('images/0021.jpg')
mean = cv2.mean(img)
print mean[0]
print mean[1]
print mean[2]
给予:
#Output
51.0028081597
63.1069849537
123.663025174
如何将此均值函数应用于移动窗口并输出每个窗口的值?
编辑:
这是我现在拥有的:
img = cv2.imread('images/0021.jpg')
def new(img):
rows,cols = img.shape
final = np.zeros((rows, cols, 3, 3))
for x in (0,1,2):
for y in (0,1,2):
img1 = np.vstack((img[x:],img[:x]))
img1 = np.column_stack((img1[:,y:],img1[:,:y]))
final[x::3,y::3] = np.swapaxes(img1.reshape(rows/3,3,cols/3,-1),1,2)
b,g,r = cv2.split(final)
rgb_img = cv2.merge([r,g,b])
mean = cv2.mean(rgb_img)
print mean[0]
print mean[1]
print mean[2]
但现在我的输出为零。
【问题讨论】:
-
@runDOSrun 这确实有帮助,谢谢:) 但是当我将代码插入“fraxel”建议的 for 循环时,我现在没有输出?我是否需要对“final”做一些事情才能通过 cv2.mean() 函数对其进行解析?
-
内核为 1/9 的 cv2.filter2D 怎么样?
-
@runDOSrun 我确实使用了打印语句,看看我上面帖子的编辑,你能看到我错过的任何明显的东西吗?
-
不确定这对cv2.filter2D有什么帮助?
标签: python opencv computer-vision