我试图在将elbp函数应用于灰度图像后显示lbp图像,该函数在面部模块中手动暴露为python。 这是代码:
LBP = cv2.face.elbp(gray_roi,1,8)
cv2.imshow("Face",LBP)
但是,我得到的是一个纯黑色的窗口,我也注意到cols和row总是比原始图像小2,这里是错误信息:
无法将形状(95,95)的输入数组广播为形状(97,97)
我注意到另一个人问了同样的问题,但是使用的是c ++:Unable to display image after applying LBPH (elbp()) operator in opencv 但我不明白他的意思是将图像标准化以适应屏幕渲染范围?
这是我的图像的矩阵输出:
如您所见,像素强度分布是正常的。
这是实际的elbp function!
答案 0 :(得分:0)
@barny thx为你的详细回复,根据你的解决方案,我用矩阵乘以64这样的值,最后我得到了显示的图像,但我不知道为什么我必须得到一个值才能获得适当的可见图像,不应该在原始的elbp函数中完成吗? 而且,矩阵元素值变得非常大:
这是我从显示的图像中打印出的直方图的一部分(乘以64的值):
histogram=scipy.stats.itemfreq(LBP1)
print(histogram)[[ 0 1726]
如果有人可以向我解释为什么我必须增加这么大的价值呢!
ps:这是我第一次询问堆栈溢出,对于每个试图帮助的人来说都是这样!