OpenCV案例合集竟还有如此的神仙代码,爱了爱了......真有趣(附3款源码)

Posted 顾木子吖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV案例合集竟还有如此的神仙代码,爱了爱了......真有趣(附3款源码)相关的知识,希望对你有一定的参考价值。

 导语

哈喽,我是木木子~

在家无聊打发时间的时候,就是刷抖音嘛~我想你们也是哈!

昨天刚刚刷了蛮多模特秀的噶,好东西给大家分享嘛~你问我啥感觉:2个字:好看,三个字:超

好看~哈哈哈

色彩,是美术、服装涉及等等各方面涉及到的一个很重要的视觉效果,咳咳咳.....

其实就是谈了谈题外话哈,今天的内容跟这个没啥关系的~完美的配色技巧是尤为必要的,好的色

彩能帮你解决很多问题啦。

今天来谈谈OpenCV中的一些简单的图像处理技巧:灰度化、色彩的饱和度、色彩亮度给大家~

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区

正文

首先准备环境

本文的话版本环境: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)

总结

哇哇哇,代码搭配上效果图真的超级好看滴~这几款神仙代码就分享给大家啦👌👌

🎯完整的免费源码领取处:找我吖!文末可得自行领取,滴滴我也可!

🎉往期部分文章推荐——

项目1.0  卡通化头像

【Opencv实战】如何快速Get专属头像?惊艳—女友要的头像终于找到了~

项目2.8  黑白上色技巧

OpenCv之黑白上色小技巧,奥黛丽赫本神颜,超惊艳滴~

项目3.1    抠图神器

【爆赞】这款Python小程序自动抠图只需5秒,秒杀PS手动抠图?

项目1.2  颜值打分系统

Python小测试 2021最新男女颜值打分小系统标准出炉,看哭无数人...

项目1.3  美颜小程序

【热门】现在的美颜特效有多可怕?基于Opencv的美颜相机告诉你

🎄文章汇总——

项目1.0 Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在文章汇总哦!!欢迎阅读~)

以上是关于OpenCV案例合集竟还有如此的神仙代码,爱了爱了......真有趣(附3款源码)的主要内容,如果未能解决你的问题,请参考以下文章

八年Java开发心路历程,深挖底层原理啃源码,最终上岸!爱了爱了

超赞圆形动画进度条,爱了爱了(使用HTMLCSS和bootstrap框架)

超赞圆形动画进度条,爱了爱了(使用HTMLCSS和bootstrap框架)

java注解详解,爱了爱了

超赞Win10日历悬停效果,爱了爱了(使用HTMLCSS和vanilla JS)

超赞Win10日历悬停效果,爱了爱了(使用HTMLCSS和vanilla JS)