网站首页 > 技术文章 正文
导语
哈喽,我是木木子~
在家无聊打发时间的时候,就是刷抖音嘛~我想你们也是哈!
昨天刚刚刷了蛮多模特秀的噶,好东西给大家分享嘛~你问我啥感觉:2个字:好看,三个字:超好看~哈哈哈
色彩,是美术、服装涉及等等各方面涉及到的一个很重要的视觉效果,咳咳咳.....其实就是谈了谈题外话哈,今天的内
容跟这个没啥关系的~完美的配色技巧是尤为必要的,好的色彩能帮你解决很多问题啦。
今天来谈谈OpenCV中的一些简单的图像处理技巧:灰度化、色彩的饱和度、色彩亮度给大家~
正文
首先准备环境
本文的话版本环境:Python3、Pycharm、opencv 、numpy以及部分自带的模块。
模块安装习惯使用:
pip install -i https://pypi.douban.com/simple/ +模块名
一、灰度化
1.1 小介绍
一张图片是由像素点矩阵构成,我们对图片进行操作即为对图片的像素点矩阵进行操作。我们只要在这个像素点矩阵中
找到这个像素点的位置,比如第x行,第y列。所以这个像素点在这个像素点矩阵中的位置就可以表示成(x,y) 同时
因为一个像素点的颜色通常包括R、G、B三个分量,分别显示出红、绿、蓝三个颜色,灰度化就是使彩色图像的R、
G、B三个分量相等的过程。灰度图像中每个像素仅具有一种样本颜色,其灰度是位于黑色与白色之间的多级色彩深
度,灰度值大的像素点比较亮,反之比较暗,像素值最大为255(表示白色),像素值最小为0(表示黑色)。
1.2 图像的灰度化
方法1:求出每个像素点的RGB三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量
方法2:求RGB和YUV颜色空间的变化关系,建立亮度Y与RGB三个颜色分量的对应关系:Y=0.3R+0.59G+0.11B,以
这个亮度值表达图像的灰度值。OpenCV的cvtColor函数,可以直接完成灰度化操作。
1.3 附代码
fn = "nv.png"
if __name__ == '__main__':
print('loading %s' % fn)
img = cv2.imread(fn)
sp = img.shape
print(sp)
# 获取图像大小
sz1 = sp[0]
sz2 = sp[1]
print('width:%d\nheight:%d' % (sz2,sz1))
# 创建一个窗口显示图像
cv2.namedWindow('img')
cv2.imshow('img',img)
# 复制图像矩阵,生成与源图像一样的图像,并显示
myimg2 = img.copy();
cv2.namedWindow('myimg2')
cv2.imshow('myimg2',myimg2)
# 复制并转换为灰度化图像并显示
myimg1 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.namedWindow('myimg1')
cv2.imshow('myimg1',myimg1)
cv2.waitKey()
cv2.destroyAllWindows()
1.4 灰度化效果展示
原图——
?
?效果图——
?
二、饱和度
1.1 小介绍
饱和度(saturation)指色彩的鲜艳程度,也称作纯度。本文的饱和度是举的一个小栗子:图像用的流年特效。
1.2
附代码
#读取原始图像
img = cv2.imread('09.jpg')
#获取图像行和列
rows, cols = img.shape[:2]
#新建目标图像
dst = np.zeros((rows, cols, 3), dtype="uint8")
#图像流年特效
for i in range(rows):
for j in range(cols):
#B通道的数值开平方乘以参数12
B = math.sqrt(img[i,j][0]) * 12
G = img[i,j][1]
R = img[i,j][2]
if B>255:
B = 255
dst[i,j] = np.uint8((B, G, R))
#显示图像
cv2.imshow('src', img)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
?1.4 饱和度效果展示
三、明暗亮度
1.1 小介绍
调用亮度跟对比度完成的本次项目。可自己随意设置明暗程度的哈~
1.2
附代码
# 定义亮度调整函数
def contrast_brightness_demo(image, c, b):
h, w, channels = image.shape
blank = np.zeros([h, w, channels], image.dtype)
dst = cv.addWeighted(image, c, blank, 1 - c, b)
cv.imshow('demo_image', dst)
# 读取图片
src = cv.imread(r'09.jpg')
# 展示原图
cv.imshow('image', src)
# 调用对比度和亮度调整函数
contrast_brightness_demo(src, 0.7, 100)
# 等待按下任意键
cv.waitKey(0)
# 释放内存
cv.destroyAllWindows()
?1.4 明暗效果展示
展示暗一点儿:
# 调用对比度和亮度调整函数contrast_brightness_demo(src, 0.2, 100)
展示明亮一点儿:
# 调用对比度和亮度调整函数contrast_brightness_demo(src, 0.7, 100)
总结
完整的免费源码领取处:
如需完整的项目源码+素材源码基地见:#私信小编06#即可获取免费的福利!
你们的支持是我最大的动力!!记得三连哦~mua 欢迎大家阅读往期的文章哦~
- 上一篇: 计算机视觉学习笔记1 图像读取显示和尺寸变换
- 下一篇: 获取视频文件的属性 获取视频文件的属性命令
猜你喜欢
- 2024-09-30 OPENCV-python 第一天 python opencv教程
- 2024-09-30 Python帮您十步搞定人脸检测 人脸检测 python
- 2024-09-30 OpenCV学习笔记(一)之图像金字塔-上采样与降采样与DOG
- 2024-09-30 Ubuntu18.04LTS下OpenCV的配置 ubuntu opencv4
- 2024-09-30 计算机视觉之Opencv(1)——基本操作
- 2024-09-30 OpenCV系列教程_03 opencv官方教程
- 2024-09-30 CV之 HOG特征描述算子-行人检测 卜算子 黄州定慧院寓居作
- 2024-09-30 OpenCV SURF特征点检测和匹配 opencv特征提取方法
- 2024-09-30 Opencv从零开始 - [启蒙篇] - 读取、几何变换
- 2024-09-30 密码忘记了?没事,我早就用Python给你监听了
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)