Python 如何在opencv或numpy中进行对比拉伸?
我试图在Python 3应用程序中扩展opencv3/numpy.ndarray图片的对比度 我找到了normalize方法,但似乎正好相反,例如在10到11的范围内按1到255。 在numpy我发现没有什么是容易的,但在opencv我遇到了。 我给的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)))
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。。。有什么问题吗?你应该发布一个。如果看不到导致图像出现问题的代码,很难判断。