如何让图像变亮---OpenCV-Python开发指南(1)

简介: 如何让图像变亮---OpenCV-Python开发指南(1)

图像的基本表示方法


在实现图像如何变亮之前,我们需要认识一下图像的基本表示方法。在电脑中,图像被分为3种:二值图像,灰度图像以及彩色图像。


其中二值图像是指仅仅包含黑色和白色两种颜色的图像,比如在程序中,为了表示数字A,我们可以通过如下栅格状排列的数据集来表示,如下图所示:

其中0代表黑色,1代表白色,这样我们可以确定我们要显示的内容,不过其没有颜色,也没有深浅,只能显示形状。


第2个种图像就是灰度图像,它可以通过深浅绘制出大致的人物形状,内容样式等等,但其没有颜色。效果与上面一样,只是每一个方块的数值不在是0和1,而是[0,255]。


最后一种是彩色图像,它就是在灰度图像上添加了颜色,虽然也可以用上面的二值图像来表示,但其中的一个方块不是0和1,也不是[0,255],而是[[0,255],[0,255],[0,255]]。这样也就是变成了一个三维的矩阵。


对于图像的基础知识,我们就介绍到这里。下面,我们每篇博文都将是一篇实战与理论的结合,本篇主要讲解图像的加法运算,并实现图像的亮度调节。


图像的两种加法运算


对于图像的处理来说,加法运算都是比较基础的运算。而复杂的图像处理,都是通过这些基础的知识来完成的。所以,对于OpenCV的开篇,我们要详细介绍它的加法运算。


在图像的处理过程中,OpenCV给我们提供了两种对图像的加法运算。一种是通过“+”号直接处理,一种是通过add函数进行处理。


“+”与add函数


在认识“+”运算符之前,我们需要了解一下RGB图像颜色的组成。众所周知,不管是红色,蓝色还是绿色,通过程序设置的最大值就是255。那么现在就有一个棘手的问题,假如加法运算之后,大于255怎么办?


对于“+”运算符来说,如果大于了255,就需要取余数。比如绿色值为222,现在要加55,那么最后值不是277,而是21。


而add函数并不是这样,通过add实现图像的加法运算,没有取余数的说法,凡是加法之后大于255的,统一都设置为255。了解了这些,我们就可以非常灵活的使用加法运算。


获取一个图像


既然了解了图像的加法运算,下面我们就来获取一个图像进行操作,代码如下所示:

import cv2
img = cv2.imread("1.jpg", 1)


这里,我们通过import cv2导入OpenCV库,然后获取图像,这里需要注意第2个参数。博主这里专门列出一个表格方便大家认识第2个参数意义。

数值 含义
-1 保持原格式不变 (也就是如果是灰度图像那么就是灰度图像,如果是彩色图像,那么就是彩色)
0 将图像调整为单通道灰度图像
1 将图像调整为3通道BGR图像,这个是more五年值
2 当载入图像深度为16位或者32位时,就返回其对应的深度图像;否则,将其转换为8位图像
4 以任何可能的颜色格式读取图像
8 使用gdal驱动程序加载图像

以上是我们常用到的参数值,当然不仅仅只有这些参数,还有一大堆获取图像后缩小图像大小的参数,感兴趣的可以查询开发文档。


接着,我们将获取的图像显示出来,具体代码如下所示:

import cv2
img = cv2.imread("1.jpg", -1)
cv2.imshow("图片", img)#显示图像,参数1为窗口标题,2为获取的图像,中文乱码后续讲解
cv2.waitKey()#等待用户按下
cv2.destroyAllWindows()#释放所有窗口


上面的注释够详细,这里就不在赘述。运行之后,显示的效果如下所示:


调整图像亮度


调整图像亮度我们一般使用add函数,但是为了区分两种加法的区别,我们同时计算并同时显示其图像,具体代码如下所示:

import cv2
img = cv2.imread("1.jpg", -1)
symbol_img=img+img
add_img=cv2.add(img,img)
cv2.imshow("图片1", symbol_img)
cv2.imshow("图片2", add_img)
cv2.waitKey()
cv2.destroyAllWindows()


运行之后,显示的效果如下图所示(左“+”,右add):


其中左边图像大于255的全部取余数,导致本来亮的像素变得更暗了。而右边图像因为使用add函数不用取模,大于255统一赋值为255,所以每个细节都只会比原图更亮。

相关文章
|
2月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
523 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
3月前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
111 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
15天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
93 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
3月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
55 4
|
1月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
56 3
|
2月前
|
存储 JSON API
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
68 7
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
|
3月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
142 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
3月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
119 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
3月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
2月前
|
JSON API 数据格式
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
57 0
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)