import cv2 import numpy as np # 定义线性变换函数 def linear_transform(image, alpha=1.0, beta=0): new_image = alpha * image + beta # 对像素值进行截断处理,保证像素值在0-255之间 new_image = np.clip(new_image, 0, 255).astype(np.uint8) return new_image # 读取图像并显示 image = cv2.imread('原图.jpg') cv2.imshow('original image', image) # 对比度调节 alpha = 2.0 # 对比度增强倍数,大于1表示增强,小于1表示降低 beta = 50 # 亮度调节参数,可以为负数,表示降低亮度 new_image = linear_transform(image, alpha=alpha, beta=beta) cv2.imshow('adjusted image', new_image) cv2.waitKey(0) cv2.destroyAllWindows()
时间: 2023-12-08 08:03:42 浏览: 102
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
这段代码实现了对图像的线性变换,即图像的对比度和亮度调节。具体来说:
- import cv2 和 import numpy as np 导入了需要用到的库。
- linear_transform 函数实现了对图像的线性变换,其中 alpha 表示对比度增强倍数,beta 表示亮度调节参数。函数的实现方式为:将每个像素的像素值乘上 alpha,再加上 beta,最后使用 np.clip 函数将像素值截断到 0-255 的范围内。
- cv2.imread 函数读取原始图像,并使用 cv2.imshow 函数显示原图像。
- 调用 linear_transform 函数获得调节后的图像,并使用 cv2.imshow 函数显示调节后的图像。
- 最后使用 cv2.waitKey(0) 等待用户按下键盘,使用 cv2.destroyAllWindows() 关闭所有窗口。
需要注意的是,这段代码没有进行异常处理,如果读取图像失败或者窗口关闭失败等情况会导致程序出错。同时,程序只对一个图像进行了线性变换,如果需要对多个图像进行变换,需要使用循环语句。
阅读全文