码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Python黑科技】使用cv2库把图片转为素描草图(注释详细)


    目录

      • 实现效果
      • 图片素材和源码
      • 实现思路
      • 实现代码
      • 总结


    欢迎关注 『Python黑科技』 系列,持续更新中
    欢迎关注 『Python黑科技』 系列,持续更新中

    实现效果

    在这里插入图片描述


    图片素材和源码

    已经上传至我的gitee仓库
    python黑科技
    在这里插入图片描述


    实现思路

    • 转灰度图片
    gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#BGR格式图片转灰度图片
    
    • 1
    • 图片反相
    Antiphase_gray_image = 255 - gray_image#灰度图片进行反相
    
    • 1
    • 高斯模糊
    blurred_inverted_gray_image = cv2.GaussianBlur(Antiphase_gray_image, (21, 21), 0)#设置图片的高斯矩阵长和宽都是21,标差为0
    # cv2.GaussianBlur 高斯模糊
    # src –输入图像;图像可以具有任何数量的信道,其独立地处理的,但深度应CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。
    # dst –输出与图像大小和类型相同的图像src。
    # ksize –高斯核大小。 ksize.width 并且 ksize.height 可以有所不同,但它们都必须是正数和奇数。或者,它们可以为零,然后从计算 sigma*。
    # sigmaX – X方向上的高斯核标准偏差。
    # sigmaY – Y方向上的高斯核标准差;如果 sigmaY 为零,则将其设置为等于 sigmaX;如果两个西格玛均为零,则分别根据ksize.width 和 进行计算 ksize.height(getGaussianKernel()有关详细信息,请参见 link);完全控制的结果,无论这一切的语义未来可能的修改,建议指定所有的ksize,sigmaX和sigmaY。
    # borderType –像素外推方法。
    inverted_blurred_image = 255 - blurred_inverted_gray_image# 反转模糊图像处理
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 图像除法
    sketck = cv2.divide(gray_image, inverted_blurred_image, scale=256.0)# 得到素描图像
    #  cv2.divide图像除法,用于得到图像灰度阴影图(素描草图的效果)
    #  src1:作为被除数的图像数组
    #  src2:作为乘除数的图像数组,大小和类型与src1相同
    #  dst:可选参数,输出结果保存的变量,默认值为None,如果为非None,输出图像保存到dst对应实参中,其大小和通道数与输入图像相同,图像的深度(即图像像素的位数)由dtype参数或输入图像确定
    #  scale:可选的结果图像缩放因子,即图像计算过程是src1*scale/src2
    #  mask:图像掩膜,可选参数,为8位单通道的灰度图像,用于指定要更改的输出图像数组的元素,即输出图像像素只有mask对应位置元素不为0的部分才输出,否则该位置像素的所有通道分量都设置为0
    #  dtype:可选参数,输出图像数组的深度,即图像单个像素值的位数(如RGB用三个字节表示,则为24位)。
    #  返回值:相除的结果图像
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 展示图片
    cv2.imshow("Original Image", img)#展示原图片
    cv2.imshow("Result Image", sketck)#展示处理后的图片
    cv2.waitKey(0)#图片展示窗口定格,去掉会让展示窗口一闪而过
    
    • 1
    • 2
    • 3

    实现代码

    import cv2
    
    img = cv2.imread("photo.png")#读取img图片
    
    gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#BGR格式图片转灰度图片
    
    Antiphase_gray_image = 255 - gray_image#灰度图片进行反相
    
    #设置图片的高斯矩阵长和宽都是21,标差为0
    blurred_inverted_gray_image = cv2.GaussianBlur(Antiphase_gray_image, (21, 21), 0)
    # cv2.GaussianBlur 高斯模糊
    # src –输入图像;图像可以具有任何数量的信道,其独立地处理的,但深度应CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。
    # dst –输出与图像大小和类型相同的图像src。
    # ksize –高斯核大小。 ksize.width 并且 ksize.height 可以有所不同,但它们都必须是正数和奇数。或者,它们可以为零,然后从计算 sigma*。
    # sigmaX – X方向上的高斯核标准偏差。
    # sigmaY – Y方向上的高斯核标准差;如果 sigmaY 为零,则将其设置为等于 sigmaX;如果两个西格玛均为零,则分别根据ksize.width 和 进行计算 ksize.height(getGaussianKernel()有关详细信息,请参见 link);完全控制的结果,无论这一切的语义未来可能的修改,建议指定所有的ksize,sigmaX和sigmaY。
    # borderType –像素外推方法。
    
    inverted_blurred_image = 255 - blurred_inverted_gray_image# 反转模糊图像处理
    
    sketck = cv2.divide(gray_image, inverted_blurred_image, scale=256.0)# 得到素描图像
    #  cv2.divide图像除法,用于得到图像灰度阴影图(素描草图的效果)
    #  src1:作为被除数的图像数组
    #  src2:作为乘除数的图像数组,大小和类型与src1相同
    #  dst:可选参数,输出结果保存的变量,默认值为None,如果为非None,输出图像保存到dst对应实参中,其大小和通道数与输入图像相同,图像的深度(即图像像素的位数)由dtype参数或输入图像确定
    #  scale:可选的结果图像缩放因子,即图像计算过程是src1*scale/src2
    #  mask:图像掩膜,可选参数,为8位单通道的灰度图像,用于指定要更改的输出图像数组的元素,即输出图像像素只有mask对应位置元素不为0的部分才输出,否则该位置像素的所有通道分量都设置为0
    #  dtype:可选参数,输出图像数组的深度,即图像单个像素值的位数(如RGB用三个字节表示,则为24位)。
    #  返回值:相除的结果图像
    
    cv2.imshow("Original Image", img)#展示原图片
    cv2.imshow("Result Image", sketck)#展示处理后的图片
    cv2.waitKey(0)#图片展示窗口定格,去掉会让展示窗口一闪而过
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    总结

    大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python黑科技!

    版权声明:

    发现你走远了@mzh原创作品,转载必须标注原文链接

    Copyright 2022 mzh

    Crated:2022-2-1

    欢迎关注 『Python黑科技』 系列,持续更新中
    欢迎关注 『Python黑科技』 系列,持续更新中
    【Python黑科技】tkinter库实战7个小项目合集(保姆级图文+实现代码)
    【Python黑科技】tkinter库实战制作一个计算器(保姆级图文+实现代码)
    【Python黑科技】tkinter库实战制作一个记事本(保姆级图文+实现代码)
    【Python黑科技】tkinter库实战用户的注册和登录(保姆级图文+实现代码)
    【Python黑科技】tkinter库实战“2048”小游戏(保姆级图文+实现代码)
    【Python黑科技】tkinter库实战“俄罗斯方块”小游戏(保姆级图文+实现代码)
    【Python黑科技】tkinter库实战“贪吃蛇”小游戏(保姆级图文+实现代码)
    【Python黑科技】tkinter库实战“连连看”小游戏(保姆级图文+实现代码)

    【Python安装第三方库一行命令永久提高速度】
    【使用PyInstaller打包exe】
    【免登陆爬虫一键下载知乎文章图片(保姆级图文+实现代码)】
    【孤独的程序员和AI机器人朋友聊天解闷(免费接口+保姆级图文+实现代码注释)】
    【几行代码绘制gif动图(保姆级图文+实现代码)】
    【几行代码实现网课定时循环截屏,保存重要知识点(保姆级图文+实现代码)】
    【常用的user_agent 浏览器头爬虫模拟用户(保姆级图文+实现代码)】
    【更多内容敬请期待】


  • 相关阅读:
    NLP手札1. 金融信息负面及主体判定方案梳理&代码实现
    (6)Mybatis-plus DML编程控制
    上传到服务的jar包怎么使用docker运行部署
    Java中的锁机制
    Hugging Face学习
    动态内存管理
    STL 概念
    wpa_supplicant介绍
    Rocket快速实战与高级原理详解
    git打tag和版本控制规范
  • 原文地址:https://blog.csdn.net/u011027547/article/details/126503052
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号