Python-OpenCV——亮度和对比度
2023-09-27 14:27:46 时间
亮度与对比度
亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度。
OpenCV中亮度和对比度应用这个公式来计算:g(x) = αf(x) + β
,其中:α(>0)、β常称为增益与偏置值,分别控制图片的对比度和亮度。
img = cv2.imread('lena.jpg') # 此处需注意,请参考后面的解释 res = np.uint8(np.clip((1.5 * img + 10), 0, 255)) tmp = np.hstack((img, res)) # 两张图片横向合并(便于对比显示) cv2.imshow('image', tmp) cv2.waitKey(0)
还记得图像混合那一节中numpy对数据溢出的取模处理吗?250+10 = 260 => 260%256=4
,它并不适用于我们的图像处理,所以用np.clip()函数将数据限定:a<0 => a=0, a>255 => a=255
做个小练习吧!创建两个滑动条分别调整对比度和亮度(对比度范围:0~0.3, 亮度0~100)。提示:因为滑动条没有小数,所以可以设置为0~300,然后乘以0.01
import cv2 import numpy as np alpha = 0.3 beta = 80 img_path = "./a.png" img = cv2.imread(img_path) img2 = cv2.imread(img_path) def updateAlpha(x): global alpha,img,img2 alpha = cv2.getTrackbarPos('Alpha','image') alpha = alpha * 0.01 img = np.uint8(np.clip((alpha * img2 + beta), 0, 255)) def updateBeta(x): global beta,img,img2 beta = cv2.getTrackbarPos('Beta','image') img = np.uint8(np.clip((alpha * img2 + beta), 0, 255)) # 创建窗口 cv2.namedWindow('image') cv2.createTrackbar('Alpha','image',0,300,updateAlpha) cv2.createTrackbar('Beta','image',0,255,updateBeta) cv2.setTrackbarPos('Alpha','image',100) cv2.setTrackbarPos('Beta','image',10) # 设置鼠标事件回调 #cv2.setMouseCallback('image',update) while(True): cv2.imshow('image',img) if cv2.waitKey(1) == ord('q'): break cv2.destroyAllWindows()
代码就不解释了,不了解的可参考这个教程:Python-OpenCV基础入门——滑动条组件(非常简明易懂)
相关文章
- OpenCV学习笔记(六十二)——《OpenCV Computer Version with Python》阅读摘要
- 图像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重构原图的Python-OpenCV代码
- Python库Numpy中的数据类型与OpenCV中数据类型的对应关系以及改写相关代码时需注意的地方
- 使用OpenCV-Python的函数minMaxLoc()应该注意的两点
- 126 python高级 - 同步应用
- Python数据可视化1.6 总结
- Python+Opencv识别两张相似图片
- 【Python】操作JSON
- python内置HTTP服务 SimpleHTTPServer
- Python OpenCV 图像相识度对比
- Install OpenCV 3.0 and Python 2.7+ on Ubuntu
- 如何在OpenCV Python中翻转图像?
- 如何在OpenCV Python中规范化图像?
- OpenCV Python – 如何找到图像中的点和轮廓之间的最短距离?
- 【华为机试真题详解 Python实现】静态扫描最优成本【2023 Q1 | 100分】
- Python人工智能概述——约束满足(扑克牌问题)
- python 虚拟环境搭建自动化
- 7月19日云栖精选夜读:Python现在为什么这么火爆?
- 用python做自己主动化測试--绘制系统性能趋势图和科学计算
- 【Leetcode】1:两数之和(Python)
- linux下python操作的一些命令
- Python变量
- 【图像处理】——Python+opencv实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(findcontours函数和contourArea函数)
- python数据结构_(字典)大O性能_学习笔记(3)
- Python使用opencv实现图片定位第三种方式
- python读取pdf文件(pdfplumber)
- torchvision 的 transforms 与 python 的图像接口opencv、skimage和PIL 相关总结