原图如下所示:

灰度滤镜

import cv2  # 导入OpenCV-Python模块
import os   # 导入文件与系统模块
import numpy as np  # 导入数值计算库'''* 功能:为图片应用灰度滤镜,并且保存图片到指定路径* filein:要应用滤镜的图片的路径* picture_name:要应用滤镜的图片的文件名
'''
def filter(filein,picture_name):imgI_filename = os.path.join(filein,picture_name) # 源文件路径imgO_filename = os.path.join(r'G:/code/053/out', picture_name)  # 目标文件路径img_rgb = cv2.imread(imgI_filename)  # 读取源图片img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY) # 转换为灰度# 调整亮度和对比度res = np.uint8(np.clip((1.2 * img_gray + 0), 0, 255))cv2.imwrite(imgO_filename, res)    # 保存转换后的图片## cv2.imshow('GrayImage',img_cartoon)  # 加预览if __name__ == '__main__':imagelist = [] # 创建空列表#循环读取指定路径下的文件名for filename in os.listdir(r'G:/code/054/in'):imagelist.append(filename)  #将文件名添加到imagelistprint(filename)filter(r'G:/code/054/in',filename)  # 为图片应用灰度滤镜

运行结果:

素描滤镜

import cv2  # 导入OpenCV-Python模块
import os   # 导入文件与系统模块
import numpy as np  # 导入数值计算库'''* 功能:为图片应用写生素描滤镜,并且保存图片到指定路径* filein:要应用滤镜的图片的路径* picture_name:要应用滤镜的图片的文件名
'''
def filter(filein,picture_name):imgI_filename = os.path.join(filein,picture_name) # 源文件路径imgO_filename = os.path.join(r'G:/code/054/out', picture_name)  # 目标文件路径img_rgb = cv2.imread(imgI_filename)  # 读取源图片num_down = 2   # 缩减像素采样的数目num_bilateral = 9 # 定义双边滤波的数目# 用高斯金字塔降低取样img_color = img_rgbfor _ in range(num_down):img_color = cv2.pyrDown(img_color)# 重复使用小的双边滤波代替一个大的滤波for _ in range(num_bilateral):img_color = cv2.bilateralFilter(img_color,d=4,sigmaColor=8,sigmaSpace=4)# 升采样图片到原始大小for _ in range(num_down):img_color = cv2.pyrUp(img_color)img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)  # 转换为灰度img_blur = cv2.medianBlur(img_gray, 19)  # 增加模糊效果。值越大越模糊(取奇数)# 检测到边缘并且增强其效果img_edge = cv2.adaptiveThreshold(img_blur,256,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,blockSize=9,C=2)img_edge = cv2.cvtColor(img_edge, cv2.COLOR_GRAY2RGB) # 彩色图像转为灰度图像cv2.imwrite(imgO_filename, img_edge) # 保存图片if __name__ == '__main__':imagelist = [] # 创建空列表#循环读取指定路径下的文件名for filename in os.listdir(r'G:/code/054/in/'):imagelist.append(filename)  #将文件名添加到imagelistprint(filename)filter(r'G:/code/054/in/',filename)  # 为图片应用写生素描滤镜

运行结果:

卡通滤镜

import cv2  # 导入OpenCV-Python模块
import os   # 导入文件与系统模块
import numpy as np  # 导入数值计算库'''* 功能:为图片应用卡通动漫滤镜,并且保存图片到指定路径* filein:要应用滤镜的图片的路径* picture_name:要应用滤镜的图片的文件名
'''
def filter(filein,picture_name):imgI_filename = os.path.join(filein,picture_name) # 源文件路径imgO_filename = os.path.join(r'G:/code/054/in', picture_name)  # 目标文件路径img_rgb = cv2.imread(imgI_filename)  # 读取图片# 转换为灰度并且使其产生中等的模糊img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)img_blur = cv2.medianBlur(img_gray, 5)  # 值越大越模糊(取奇数)#检测到边缘并且增强其效果img_edge = cv2.adaptiveThreshold(img_blur,128,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,blockSize=9,C=8)img_edge = cv2.cvtColor(img_edge, cv2.COLOR_GRAY2RGB) #彩色图像转为灰度图像img_cartoon = cv2.bitwise_and(img_rgb, img_edge)  # 灰度图像转为彩色图像# 调整亮度和对比度res = np.uint8(np.clip((2.0 * img_cartoon + 16), 0, 255))# 保存转换后的图片cv2.imwrite(imgO_filename, res)if __name__ == '__main__':imagelist = [] # 创建空列表#循环读取指定路径下的文件名for filename in os.listdir(r'G:/code/054/in'):imagelist.append(filename)  #将文件名添加到imagelistprint(filename)filter(r'G:/code/054/in',filename)  # 为图片应用卡通动漫滤镜

运行结果:

使用OpenCV-Python为照片添加不同滤镜(每天一个python小项目)相关推荐

  1. 为车身添加花纹(每天一个PS小项目)

    原图由花纹的矢量图与汽车背景图构成: 双击花纹图层,选择渐变叠加,自行选择渐变的方式: 右键单击花纹图层,选择栅格化图层样式: 点击编辑-变换-变形,调节花纹形状: 确定形状后,选择图层的正片叠底,即 ...

  2. 为沙发添加花纹(每天一个PS小项目)

    原图如图所示: 点击图层-新建填充图层-图案,点击载入图案: 选择事先准备好的通道,按Ctrl点击该通道选中: 然后点击图层,选择白色蒙版: 按Ctrl+delete键(视频上说alt+delete好 ...

  3. python实现批量添加联系人到手机通讯录+python可视化编程案例

    简要 本案例通过python+pandas实现提取excel工作表中的数据,并将其添加相关代码信息,再保存为txt,然后保存为后缀名为.vcf的通讯录备份文件,此文件可以直接使用手机自带通讯录软件打开 ...

  4. python开发web运维工具_【实战小项目】python开发自动化运维工具--批量操作主机...

    有很多开源自动化运维工具都很好用如ansible/salt stack等,完全不用重复造轮子.只不过,很多运维同学学习Python之后,苦于没小项目训练,本篇演示用Python写一个批量操作主机的工具 ...

  5. python文件运行哪一个_如何使一个python文件运行另一个?

    本问题已经有最佳答案,请猛点这里访问. 如何创建一个python文件来运行另一个? 例如,我有两个.py文件.我想运行一个文件,然后让它运行另一个.py文件. docs.python.org / / ...

  6. python web 文件管理_我的第一个python web开发框架(23)——代码版本控制管理与接口文档...

    书接上一回,小白和老菜聊到代码的版本控制和接口文档 小白:为什么要做版本控制,我不弄版本控制不也完成了项目了吗?要做版本控制不是很麻烦,又要安装服务又要提交代码,代码又不是多人用开发,还要写文档... ...

  7. android简单小项目实例_自学(系统学)Python了那么久, 想就业? 几个简单小项目让你通过面试!...

    本人从事Python开发多年,精通爬虫,web,熟悉其他方向,好多小伙伴私聊我说,我看了你的文章后,我学习了,但是对于项目这块还是不是很熟悉,如何快速掌握几个小项目,以及几个可以面试的项目.欢迎大家订 ...

  8. python 苹果手机自动重启_Linux下编写一个Python自动重启脚本

    团队中有一大部分的监控任务都是自己来做的,这其中包括了很多脚本,主要是Python脚本.但是有时由于不可预料的原因,Python会异常终止,因此编写一个自动检测Python脚本是否异常终止的脚本,当异 ...

  9. python识图 web_轻松简单搭建一个python的OCR服务器 识别截图中内容并提取

    Why? OCR(也称为光学字符识别)已经成为Python的常用工具.随着开源库Tesseract和Ocrad的出现,越来越多的程序员使用OCR编写自己程序.OCR的一个小例子,例如使用OCR直接从截 ...

  10. 《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

最新文章

  1. Ubuntu之Gitlab、Gerrit、Jenkins协调工作配置
  2. 计算机二级aoa软件_国产软件WPS进入全国计算机二级考试 明年3月实施
  3. 一条数据的漫游 -- X-Engine SIGMOD Paper Introduction
  4. Github上36893颗星!这个被称为下一代企业级应用首选技术你学了么?
  5. 用设计模式去掉没必要的状态变量 —— 状态模式
  6. Android studio 开发中 用git实现批量忽略特定文件的方法
  7. java匿名类对象的坏处_java匿名内部类的使用注意事项
  8. 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
  9. java小程序商城源码
  10. (CVPR_2021) Center-based 3D Object Detection and Tracking
  11. IQ FMEA-失效模式及影响分析
  12. 计算机网络第七版1-3
  13. linux c硬盘序列号,linux下获得硬盘序列号的c源代码
  14. 浙江大学【面板数据分析与STATA应用】——第一讲短面板数据分析
  15. 数据分析之Excel篇(三):计算统计函数
  16. 架构师之路16年精选50篇_2011年精选
  17. H264---码率控制---CBR、VBR、ABR、CVBR四种编码方式
  18. SSM框架项目实践,leetcode46
  19. node php v2ex,一个仿V2EX的开源二次元论坛程序:Vmoex安装教程
  20. Vue路由懒加载(resolve),嵌套路由 3

热门文章

  1. EventTrigger 事件触发器
  2. java与python-Python和Java二选一该学啥?
  3. RW 搜索ACPI协议RSD PTR表
  4. C练题笔记之:Leetcode-136. 只出现一次的数字
  5. JUC并发编程系列详解篇十四(自旋锁 VS 适应性自旋锁)
  6. 关于cmd中路径包含空格的解决办法
  7. Qt编写的项目作品2-控件属性设计器(组态)
  8. HashMap原理浅析(关于红黑树是什么?)
  9. GIS中的栅格分析工具和技术
  10. 2021宝应各高中高考成绩查询,2019扬州大市各高中高考情况如何,看超全喜报!...