【分享Python代码】图片转化为素描画

哈喽,大家好,我是木易巷~

代码生成效果图

原图:

图片

生成图:

图片

原图:

图片

生成图:

图片

准备工作

Python编程首先需要安装环境,下面是详细步骤:

会的小伙伴可自行跳过,代码在最后

1、安装Python教程

步骤一、双击打开Python.exe文件,出现如下界面

图片

注意:勾选√ Add Python 3.9 PATH 选项

这个选项会自动为Python添加变量环境给计算机(一定要选)

步骤二、选择自定义安装(Cutormize installation)

图片

步骤三、默认打勾内容,不用改,按Next按钮

图片

 步骤四、勾选 Install for all users选项

图片

Browse为选择安装路径,可以自定安装路径 D盘 C盘都可以。

步骤五、选择好后可以按-按钮 (Install)即可安装

图片

检查Python是否正常安装成功

1、打开CMD(Ctrl+R键) 输入cmd 再在终端输入Python

图片

2、出现以下内容即,安装成功

图片

3、在>>>后输入exit() 退出

4、再在终端输入 pip show pip  查看pip是否安装成功

图片

5、出现上例图片样式即安装成功!恭喜你!Python安装成功!

2、Pycharm使用教程

准备工作:

下载并安装Python解释器和Python开发工具Pycharm。

准备就绪后,开始使用Pycharm编写第一个python程序。

步骤 1. 打开 Pycharm,选择 Create New Project,创建一个新项目。

图片

步骤 2. 设置Python项目存放目录,同时选择要使用的解释器版本,点击Create。

图片

步骤 3. 右键项目, 选择New, 再选择Python File 创建Python文件。

图片

步骤 4. 点击完Python File后,在弹框中输入Python文件名后,回车创建Python文件成功。

图片

步骤 5. 显示 01-第一个Python程序.py 后表明文件创建成功,在右侧空白区输入代码后,再右键点击Run运行程序。

图片

步骤 6. 运行成功后,Pycharm Console窗口将显示我们的输出结果。

图片

运行成功就说明,环境以及配置都没有问题!

from PIL import Image
import numpy as npa = np.asarray(Image.open(r".\原图.jpg").convert('L')).astype('float')depth = 10.                        # (0-100)
grad = np.gradient(a)              #取图像灰度的梯度值
grad_x, grad_y =grad               #分别取横纵图像梯度值
grad_x = grad_x*depth/100.
grad_y = grad_y*depth/100.
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./Avec_el = np.pi/2.2                   # 光源的俯视角度,弧度值
vec_az = np.pi/4.                    # 光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az)   #光源对x 轴的影响
dy = np.cos(vec_el)*np.sin(vec_az)   #光源对y 轴的影响
dz = np.sin(vec_el)                  #光源对z 轴的影响b = 255*(dx*uni_x + dy*uni_y + dz*uni_z)     #光源归一化
b = b.clip(0,255)im = Image.fromarray(b.astype('uint8'))      #重构图像
im.save(r".\手绘.jpg")
print("保存成功,请查看")

仔细看代码!! 注意图片命名,注意路径!!

--END--

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/108126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4大软件测试策略的特点和区别(单元测试、集成测试、确认测试和系统测试)

四大软件测试策略分别是单元测试、集成测试、确认测试和系统测试。 一、单元测试 单元测试也称为模块测试,它针对软件中的最小单元(如函数、方法、类、模块等)进行测试,以验证其是否符合预期的行为和结果。单元测试通常由开发人…

医疗制药行业数字化创新实践

本文将为大家分享3个制药行业的创新案例吧,都是在不同智能制造落地场景下的典型案例,希望对大家有所启发。 01 医疗设备企业零代码搭建集成式信息化管理平台,年节省150余万元 医疗制药行业数字化实现工具>>>>https://www.jianda…

C/C++笔试易错题+图解知识点(二)—— C++部分(持续更新中)

目录 1.构造函数初始化列表 1.1 构造函数初始化列表与函数体内初始化区别 1.2 必须在初始化列表初始化的成员 2. 引用初始化以后不能被改变,指针可以改变所指的对象 3 构造函数与析构函数系列题 3.1构造函数与析构函数的调用次数 4 类的运算符重载 5 类的静态数据成…

MySQL配置环境变量和启动登录

如果不配置环境变量,每次登录 MySQL 服务器时就必须进入到 MySQL 的 bin 目录下,也就是输入“cd C:\Program Files\MySQL\MySQL Server 5.7\bin”命令后,才能使用 MySQL 等其它命令工具,这样比较麻烦。配置环境变量以后就可以在任…

c# WPF 应用程序在屏幕上居中显示

xaml<Window ... WindowStartupLocation"CenterScreen">

vue小写数字转大写-例如:11转为十一

vue小写数字转大写-例如&#xff1a;11转为十一 在Vue中&#xff0c;可以使用自定义过滤器&#xff08;Custom Filter&#xff09;来将数字转换为大写的形式。 下面是一个示例&#xff1a; // main.js import Vue from vue;Vue.filter(toChineseNumber, function (value) {c…

4、在docker容器内的tomcat 中发布项目

1、查看本地是否有tomcat镜像&#xff0c;如果不存在则去下载 docker images 2、查看本地是否有tomcat容器&#xff0c;如存在跳过第3步 docker ps 3、创建tomcat容器 此容器用于复制tomcat的配置文件&#xff0c;配置文件复制后需删除此容器&#xff0c;如果已经存在跳过此步…

如何把视频压缩变小?

如何把视频压缩变小&#xff1f;大家都知道&#xff0c;视频一般都伴随着很大的文件体积&#xff0c;&#xff1a;尤其是现在的视频大多是高清晰度的&#xff0c;因此视频文件的体积就更加的大&#xff0c;视频体积太大会给我们带来很多的不便&#xff0c;主要是以下这几点&…

【数据结构C/C++】十大排序算法的实现思路以及易写易记忆版代码实现

文章目录 冒泡排序选择排序插入排序归并排序数组版本链表版本归并排序-内部缓存法 快速排序&#xff08;重点讲解&#xff09;堆排序&#xff08;重点理解&#xff09;计数排序基数排序桶排序希尔排序总结408考研各数据结构C/C代码&#xff08;Continually updating&#xff09…

confluence版本升级

由于confluence的漏洞CVE-2023-22515的出现&#xff0c;现在需要升级版本 查看漏洞已修复版本&#xff1a; 需要升级到8.5.2 下载软件包&#xff1a; https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-8.5.2-x64.bin 完成后上传…

c# 同步异步锁

在 C# 中&#xff0c;synchronization&#xff08;同步&#xff09;和asynchronization&#xff08;异步&#xff09;锁都是用来保护共享资源的。在单线程环境中&#xff0c;这些锁不是必要的&#xff0c;但在多线程环境中&#xff0c;由于多个线程可以访问和修改同一资源&…

哪家好用?四款国内外远程桌面软件横测:ToDesk、向日葵、TeamViewer、AnyDesk

目录 前言 一、软件介绍 ​编辑1.ToDesk 2.向日葵 3.TeamViewer 4.AnyDesk 二、实测表现 【文件传输】 【聊天会话】 【独特功能】 ToDesk隐私屏和扩展屏 向日葵白板 eamViewer控制面板 AnyDesk“已发现”周边连接 【收费机制】 【安装下载】 三、总结 前言 …

oracle数据库flashback系列--闪回数据库在dataguard中的使用

很多人在学习flashback database这个oracle技术的时候,都会有一个疑问,就是如果我只有一个数据库作为生产库的话,是否有这样的业务需求导致我们要把数据库闪回到以前的时间点&#xff1f;以及这样做是否值得&#xff08;当前时间点和闪回目的时间点中间的所有操作将丢失&#x…

Linux命令之chpasswd命令

一、chpasswd命令简介 chpasswd命令用于同时更改多个用户的密码。它可以从标准输入或指定的文件中读取用户名和密码的组合&#xff0c;并将其应用于系统中的用户。chpasswd命令通常用于批量更改用户密码&#xff0c;特别是在自动化脚本或批处理任务中&#xff0c;该命令需要roo…

uniapp简单实现搜索--历史记录功能

点击搜索时候&#xff0c;将搜索的值存入本地记录并展示&#xff0c;并且有清空历史记录功能。 代码直接贴上&#xff1a; <template><view><!-- 搜索框 --><view class"search"><view style"display: flex;align-items: center;&q…

【23真题】两电一邮之一,难度骤降!24可能回升!

今天分享的是23年电子科技大学858的信号与系统试题及解析。23成电858真题和22年相比&#xff0c;难度骤降&#xff01;今年我预测可能会有反弹。22年成电858真题&#xff0c;是我做过的22真题中数一数二的难度&#xff01;23年一般&#xff0c;但是题目也很好&#xff0c;真的很…

Excel——对其他工作表和工作簿的引用

一、引用其他sheet页表区域 若希望在公式中引用其他工作表的单元格区域&#xff0c;可以在公式编辑状态下&#xff0c;通过鼠标单击相应的工作表标签&#xff0c;然后选择相应的单元格区域。 例1 跨sheet页引用其他工作表区域 如图1所示的工作表Sheet2为工资表。 在Sheet1表…

三、K8S之ReplicaSet

ReplicaSet 一、概述 Kubernetes最核心的功能是编排&#xff0c;编排操作都是依靠控制器对象来完成&#xff0c;高级控制器控制着基础的控制器&#xff0c;基础控制器再去控制Pod&#xff0c;Pod里面再包容器。K8S项目里API对象层级大概就是这样。 而ReplicaSet这个控制器是…

AJAX为什么叫AJAX

AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;这个名字是由美国程序员Jesse James Garrett在2005年提出的&#xff0c;用来描述一种用于创建交互式Web应用程序的技术组合。它之所以被称为"AJAX"&#xff0c;有以下原因&#xff1a; Asynchronous&…

Flink之窗口聚合算子

1.窗口聚合算子 在Flink中窗口聚合算子主要分类两类 滚动聚合算子(增量聚合)全窗口聚合算子(全量聚合) 1.1 滚动聚合算子 滚动聚合算子一次只处理一条数据,通过算子中的累加器对聚合结果进行更新,当窗口触发时再从累加器中取结果数据,一般使用算子如下: aggregatemaxmaxBy…