#对比度调节函数 def img_contrast_bright(img,a,b,g): h,w,c = img.shape blank = np.zeros([h,w,c],img.dtype) dst = cv.addWeighted(img, a,blank,b,g) return dst
时间: 2023-12-31 09:06:49 浏览: 24
这个函数可以用来调节图像的对比度和亮度。其中,a是对比度系数,b是亮度加成值,g是gamma校正系数。对于函数中的addWeighted操作,它会对原始图像进行线性变换,将图像中每个像素的值进行如下计算:
dst(x,y) = a * src(x,y) + b
其中,src(x,y)是原始图像中像素点(x,y)的值,dst(x,y)是变换后图像中像素点(x,y)的值。
通过调节a,b,g的值,可以实现对图像的不同程度的对比度和亮度调节。如果a>1,则增强图像的对比度,如果a<1,则降低图像的对比度。如果b>0,则增加图像的亮度,如果b<0,则减小图像的亮度。如果g>1,则增强图像的暗部细节,如果g<1,则增强图像的亮部细节。
相关问题
alpha = 1.5 # 对比度beta = 50 # 亮度img_contrast = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)
这段代码使用了 `cv2.convertScaleAbs()` 函数来调整图像的亮度和对比度。其中,`alpha` 表示对比度的缩放系数,`beta` 表示亮度的增加量。这个函数的作用是将输入图像中的像素值线性变换,使其按照下面的公式进行缩放和平移:
```
dst(i, j) = cv::saturate_cast<uchar>(alpha * src(i, j) + beta)
```
其中,`src(i, j)` 表示输入图像中第 `(i, j)` 个像素的值,`dst(i, j)` 表示输出图像中第 `(i, j)` 个像素的值,`cv::saturate_cast<uchar>` 表示将结果转换为 8 位无符号整数,以避免像素值超出 0~255 的范围。
通过调整 `alpha` 和 `beta` 的值,可以实现不同程度的对比度和亮度调整。例如,设置 `alpha=2.0` 和 `beta=30` 可以使图像更加明亮和对比。
def image_to_array_1dim(img,w,h): img_r,img_g,img_b = img.split() # print("img.size:",img.size) #416*416 #如果转换成numpy数组,可以用shape。np.arrary(img) image_array_r = np.array(img_r,dtype='float32')/255 # 将RGB归一化 image_array_g = np.array(img_g,dtype='float32')/255 image_array_b = np.array(img_b,dtype= 'float32')/255 # print("image_array_r.shape:",image_array_r.shape) # (416, 416) image_array_r = image_array_r.reshape(w*h,) # reshape至一维 image_array_g = image_array_g.reshape(w*h,) image_array_b = image_array_b.reshape(w*h,) # print("image_array_r.shape:",image_array_r.shape) # (173056,) img_array_3 = [image_array_r,image_array_g,image_array_b] # 合并成三维,再reshape至一维 img_array_3 = np.array(img_array_3) img_array_3 = img_array_3.reshape(3*w*h,)
这段代码中,首先使用PIL库中的split()函数将图像拆分为R、G、B三个通道的图像。接着将每个通道的图像转换为numpy数组,并将像素值归一化到0到1之间。然后,将每个通道的数组reshape为一维数组,最后将三个通道的数组合并成一个三维数组,并将其reshape为一维数组。最终返回的就是一个一维的numpy数组。