Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之四 简单复古怀旧照片效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之四 简单复古怀旧照片效果

目录

[Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之四 简单复古怀旧照片效果](#Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之四 简单复古怀旧照片效果)

一、简单介绍

二、简单复古怀旧照片效果实现原理

三、简单复古怀旧照片效果案例实现简单步骤


一、简单介绍

Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python是一种解释型脚本语言,可以应用于以下领域: Web 和 Internet开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发、网络爬虫。

这里使用 Python 基于 OpenCV 进行视觉图像处理,......

二、简单复古怀旧照片效果实现原理

复古怀旧效果通常涉及改变图像的色调、对比度和颗粒度等,以模拟老式相机或照片的效果。

怀旧风格的设计主要是在图像的颜色空间进行处理,以GRB空间为例,对R、G、B这3个通道的颜色数值进行处理,让图像有一种泛黄的老照片效果。设计的转换公式如下:

python 复制代码
R=0.393×r+0.769×g+0.189×b

G=0.349×r+0.686×g+0.168×b

B=0.272×r+0.534×g+0.131×b

其中,r、g、b分别代表输入的原图某一点图像像素的RGB值;R、G、B代表了该点变换后的RGB值,注意变换后的RGB值要约束在0~255之间。

三、简单复古怀旧照片效果案例实现简单步骤

1、编写代码

2、运行效果

3、具体代码

python 复制代码
"""
复古怀旧风格
    怀旧风格的设计主要是在图像的颜色空间进行处理,
    以GRB空间为例,对R、G、B这3个通道的颜色数值进行处理,
    让图像有一种泛黄的老照片效果。设计的转换公式如下:
        B = int(0.272 * r + 0.534 * g + 0.131 * b)
        G = int(0.349 * r + 0.686 * g + 0.168 * b)
        R = int(0.393 * r + 0.769 * g + 0.189 * b)
"""

import cv2
import numpy as np


def RetroEffect(img):
    """
    复古怀旧风格
    :param img:
    :return:
    """
    copy_img = img.copy()

    height, width, n = img.shape

    # 遍历像素处理
    for i in range(height):
        for j in range(width):
            b = img[i, j][0]
            g = img[i, j][1]
            r = img[i, j][2]

            # 计算新的图像中的 RGB 值
            B = int(0.272 * r + 0.534 * g + 0.131 * b)
            G = int(0.349 * r + 0.686 * g + 0.168 * b)
            R = int(0.393 * r + 0.769 * g + 0.189 * b)

            # 约束图像像素值,防止溢出
            copy_img[i, j][0] = max(0, min(B, 255))
            copy_img[i, j][1] = max(0, min(G, 255))
            copy_img[i, j][2] = max(0, min(R, 255))

        # 添加颗粒效果
        # noise = np.random.normal(0, 0.3, img.shape).astype(np.uint8)
        # copy_img = cv2.add(copy_img, noise)

    return copy_img


def main():
    img = cv2.imread("Images/DogFace.jpg")
    retro_img = RetroEffect(img)

    # 设置窗口属性,并显示图片
    cv2.namedWindow("Dog", cv2.WINDOW_KEEPRATIO)
    cv2.imshow("Dog", img)

    # 设置窗口属性,并显示图片
    cv2.namedWindow("retro_img", cv2.WINDOW_KEEPRATIO)
    cv2.imshow("retro_img", retro_img)

    cv2.waitKey(0)
    cv2.destroyAllWindows()


if __name__ == '__main__':
    main()
相关推荐
兴科Sinco12 分钟前
[leetcode 1]给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数[力扣]
python·算法·leetcode
程序员奈斯21 分钟前
Python深度学习:NumPy数组库
python·深度学习·numpy
人生游戏牛马NPC1号23 分钟前
学习 Android (二十一) 学习 OpenCV (六)
android·opencv·学习
yongche_shi23 分钟前
第二篇:Python“装包”与“拆包”的艺术:可迭代对象、迭代器、生成器
开发语言·python·面试·面试宝典·生成器·拆包·装包
深度学习lover24 分钟前
<数据集>yolo梨幼果识别数据集<目标检测>
python·yolo·目标检测·计算机视觉·数据集
Developer-YC30 分钟前
像素图生成小程序开发全解析:从图片上传到Excel图纸
java·javascript·图像处理·微信小程序·excel
刀客12340 分钟前
测试之道:从新手到专家实战(四)
python·功能测试·程序人生·测试用例·集成测试·学习方法·安全性测试
mit6.82442 分钟前
[rStar] 解决方案节点 | `BaseNode` | `MCTSNode`
人工智能·python·算法
这里有鱼汤43 分钟前
低价股的春天来了?花姐用Python带你扒一扒
后端·python
Elastic 中国社区官方博客1 小时前
介绍 Python Elasticsearch Client 的 ES|QL 查询构建器
大数据·开发语言·数据库·python·elasticsearch·搜索引擎·全文检索