Python 如何在opencv或numpy中进行对比拉伸?

Python 如何在opencv或numpy中进行对比拉伸?,python,opencv,numpy,image-processing,contrast,Python,Opencv,Numpy,Image Processing,Contrast,我试图在Python 3应用程序中扩展opencv3/numpy.ndarray图片的对比度 我找到了normalize方法,但似乎正好相反,例如在10到11的范围内按1到255。 在numpy我发现没有什么是容易的,但在opencv我遇到了。 我给的 alpha=255 / (upper_boundary - lower_boundary) 作为缩放和 beta=(- (lower_boundary * (255 / (upper_boundary - lower_boundary)))

我试图在Python 3应用程序中扩展opencv3/numpy.ndarray图片的对比度

我找到了normalize方法,但似乎正好相反,例如在10到11的范围内按1到255。 在numpy我发现没有什么是容易的,但在opencv我遇到了。 我给的

alpha=255 / (upper_boundary - lower_boundary)
作为缩放和

beta=(- (lower_boundary * (255 / (upper_boundary - lower_boundary)))
作为delta,但这会产生奇怪的结果,尽管输入了例如10和250,但黑暗部分会变得非常亮

我不确定我的数学是否正确。 我在中也看到了这个公式
newValue=255*(oldValue-minValue)/(maxValue-minValue)
,但我不能将其应用于
convertScaleAbs
函数的比例和增量概念,对吗

编辑: 我还尝试了
normalize
opencv函数,使用
alpha=lower_boundary
beta=lower_boundary
和norm_type=cv2.norm_MINMAX,结果是我可以输入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)

我很感谢任何关于我可能忽略了什么简单功能的提示,或者我可以使用什么来更轻松地(手动)完成此操作

查看参数为
NORM\u MINMAX
cv::normalize
。您的上一个公式也可以。@Miki谢谢,我已经试过了,请查看我的编辑以了解问题。检查图像中的最小值和最大值。如果它们不在[0255]中,您就会遇到一些问题。如果原始值在[065K]中,则需要将其除以256,然后再应用
numpy.uint8(…)
原始值在0到255之间,格式已经是uint8。。。有什么问题吗?你应该发布一个。如果看不到导致图像出现问题的代码,很难判断。