我正试图在我的Python 3应用程序中扩展opencv3 / numpy.ndarray图片的对比度。
我找到了normalize方法,但这似乎相反,例如在10到11的范围内按1到255。
在numpy,我发现没什么容易,但在opencv我遇到了convertScaleAbs
function。
我给了它
alpha=255 / (upper_boundary - lower_boundary)
作为缩放和
beta=(- (lower_boundary * (255 / (upper_boundary - lower_boundary)))
作为delta,但是这会产生奇怪的结果,尽管黑色部分进入例如10和250。
我不确定我的数学是否正确。
我还在another question中看到了这个公式newValue = 255 * (oldValue - minValue)/(maxValue - minValue)
,但我无法将其应用于convertScaleAbs
函数的比例和delta概念,对吗?
编辑:
我还使用normalize
,alpha=lower_boundary
beta=upper_boundary
尝试了and norm_type=cv2.NORM_MINMAX
opencv函数,结果是我可以输入0到255之间的数字,但结果图像只有这些亮度值和对比度不太紧张!
这是一个最小的完整可验证示例:
import cv2
image = cv2.imread("Tux.png")
cv2.normalize(image, image, alpha=20, beta=200, norm_type=cv2.NORM_MINMAX)
cv2.namedWindow("TestWindow", cv2.WINDOW_AUTOSIZE)
cv2.imshow("Test", image)
cv2.waitKey(0)
我很感谢有关我可能忽略的简单功能或者我可以用来更轻松地(手动)执行此操作的任何提示!