CodeBuddy 实现图片转素描手绘工具
本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
前言
最近在社交媒体上,各种素描风格的图片火得一塌糊涂,身边不少朋友都在分享自己的 “素描照”,看着那些黑白线条勾勒出的独特韵味,我心里直痒痒,特别想自己动手试试,把喜欢的彩色图片变成黑白素描手绘风格。在网上找了不少在线工具,要么功能有限,要么画质差强人意,我就琢磨着能不能在本地实现这个功能,毕竟自己动手,不仅能按需调整效果,还更有成就感。
一番研究后,我发现使用 Python 的 opencv 模块就可以实现图片转素描的功能,可我虽然对 Python 有一定了解,但真要从零开始写代码,还是有点害怕了。就在这时,CodeBuddy 进入了我的视线。CodeBuddy 拥有强大的代码智能补全和实时语法检查功能,对于我这种偶尔会粗心犯错的人来说,简直太友好了,能及时发现并纠正代码中的错误,大大提高了开发效率。而且它还支持多种编程语言和框架,和 opencv 模块搭配使用毫无压力,还能提供很多相关的代码示例和优化建议,让我在开发过程中少走了很多弯路。
使用CodeBuddy完成图片的素描化
我们打开vscode进入到拓展中直接搜索CodeBuddy,点击安装这个插件就行了
我们点击左侧的插件图标就能进行使用了
还是老样子先生成README文件
对ai说:
我想实现图片转素描手绘工具,本工具主要使用python的opencv模块编写,将彩色图片转成黑白素描手绘图,你帮我生成下README文件
然后直接到Craft艾特这个文件进行直接开发,代码生成很快
代码生成好了之后我们直接运行程序,在终端输入命令python code.py
让我们选择一个图片并且文件的路径必须得是英文路径,不能包含中文
然后他就生成出了一张素描画,我们可以和原照片对比下,效果还是挺不错的,我这里的代码配置参数直接就是默认的,你们也可以进行设置的
相关代码如下:
import cv2import numpy as npfrom tkinter import filedialog, Tkfrom os import getcwdfrom re import findalldef open_path():# 图片路径root = Tk()root.withdraw()file_path = (filedialog.askopenfilename(title='选择图片文件', filetypes=[('All Files', '*')]))return file_pathdef dodgeNaive(image, mask):# determine the shape of the input imagewidth, height = image.shape[:2]# prepare output argument with same size as imageblend = np.zeros((width, height), np.uint8)for col in range(width):for row in range(height):# do for every pixelif mask[col, row] == 255:# avoid division by zeroblend[col, row] = 255else:# shift image pixel value by 8 bits# divide by the inverse of the masktmp = (image[col, row] << 8) / (255 - mask)# print('tmp={}'.format(tmp.shape))# make sure resulting value stays within boundsif tmp.any() > 255:tmp = 255blend[col, row] = tmpreturn blenddef dodgeV2(image, mask):return cv2.divide(image, 255 - mask, scale=256)def burnV2(image, mask):return 255 - cv2.divide(255 - image, 255 - mask, scale=256)def rgb_to_sketch(src_image_name):print('转换中......')img_rgb = cv2.imread(src_image_name)img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)# 读取图片时直接转换操作# img_gray = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)img_gray_inv = 255 - img_grayimg_blur = cv2.GaussianBlur(img_gray_inv, ksize=(21, 21),sigmaX=0, sigmaY=0)img_blend = dodgeV2(img_gray, img_blur)# cv2.imshow('original', img_rgb)# cv2.imshow('gray', img_gray)# cv2.imshow('gray_inv', img_gray_inv)# cv2.imshow('gray_blur', img_blur)cv2.imwrite(dst_image_name, img_blend)save_path = getcwd() + "\\" + dst_image_name # 保存路径print('转换完成!!!\n')print('保存路径:' + save_path)cv2.imshow(save_path, img_blend)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == '__main__':print('请选择图片(路径不要含中文):')src_image_name = open_path() # 文件路径print(src_image_name+'\n')image_name = ''.join(findall(r'[^\\/:*?"<>|\r\n]+$', src_image_name)) # 获取文件名dst_image_name = 'Sketch_' + image_namergb_to_sketch(src_image_name)
感兴趣的可以去学习下哦
总结
总的来说,这次使用 CodeBuddy 实现图片转素描手绘工具的体验非常棒。它不仅帮我实现了一直想尝试的功能,还让我在开发过程中学习到了很多新知识和技巧。如果你也和我一样,对编程实现有趣的功能感兴趣,又担心自己搞不定复杂的代码,不妨试试 CodeBuddy,相信它会给你带来惊喜!
相关文章:

CodeBuddy 实现图片转素描手绘工具
本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 前言 最近在社交媒体上,各种素描风格的图片火得一塌糊涂,身边不少朋友都在分享自己的 “素描照”,看着那些黑白线条勾勒出的独特韵味&a…...

3.8.2 利用RDD计算总分与平均分
在本次实战中,我们利用Spark的RDD完成了成绩文件的总分与平均分计算任务。首先,准备了包含学生成绩的文件并上传至HDFS。接着,通过交互式方式逐步实现了成绩的读取、解析、总分计算与平均分计算,并最终输出结果。此外,…...

29-FreeRTOS事件标志组
一、概述 事件是一种实现任务间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。与信号量不同的是,它可以实现一对多,多对多的同步。 即一个任务可以等待多个事件的发生࿱…...
天地图实景三维数据分享(江苏)
1、天地图介绍 “天地图”(MAPWORLD)是国家地理信息公共服务平台 ,2011年正式上线 ,是自然资源部门向社会提供各类在线地理信息公共服务、推动地理信息数据开放共享的政府网站 ;是中国区域内基础地理信息数据资源最全…...
Jenkins的Pipline中有哪些区块,以及其它知识点整理
目录 ■模板 ■Jenkins的Pipline中有哪些区块 1. pipeline(顶层区块) 2. agent(执行节点) 3. stages(阶段集合) 4. stage(单个阶段) 5. steps(具体步骤࿰…...

「EMD/EEMD/VMD 信号分解方法 ——ECG信号处理-第十四课」2025年5月23日
一、引言 上一节,我们介绍了希尔伯特黄变换(HHT)及其经验模态分解(EMD)的相关内容,这一节,我们继续拓展EMD分解技术,补充介绍集合经验模态分解(Ensemble Empirical Mode …...

二叉树层序遍历6
INT_MIN的用法: INT_MIN是C/C 中的一个宏常量 ,在 <limits.h> (C 中也可使用 <climits> )头文件中定义,代表 int 类型能表示的最小整数值 。其用法主要体现在以下方面: 1.初始化变量 …...

【论文精读】2023 AAAI--FastRealVSR现实世界视频超分辨率(RealWorld VSR)
文章目录 一、摘要二、Method2.1 现象(问题)--对应文中隐状态的分析(Analysis of Hidden State)2.2 怎么解决 --对应文中Framework2.2.1 整体流程:2.2.2 HSA模块怎么工作?2.2.2.1 隐藏状态池2.2.2.2 选择性…...

IPython 常用魔法命令
文章目录 IPython 魔法命令(Magic Commands)一、系统与文件操作1. %ls2. %cd和%pwd3. %%writefile4. %run 二、性能分析与计时1. %timeit2. %prun3. %%timeit 三、代码处理与交互1. %load2. %edit3. %store 四、调试与诊断2. …...
数据同步自动化——如何用Python打造高效工具?
友友们好! 我是Echo_Wish,我的的新专栏《Python进阶》以及《Python!实战!》正式启动啦!这是专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会…...
开源与闭源之争:AI时代的创新博弈与未来抉择
在人工智能技术狂飙突进的今天,开源与闭源之争已不再局限于技术圈的讨论,而是演变为一场关乎技术伦理、商业格局乃至人类文明走向的深度博弈。当Meta的Llama 3开源模型下载量突破百万,当OpenAI的GPT-5继续加固技术壁垒,这场没有硝…...
flutter dart class语法说明、示例
🔹 Dart 中的 class 基本语法 class ClassName {// 属性(字段)数据类型 属性名;// 构造函数ClassName(this.属性名);// 方法返回类型 方法名() {// 方法体} }✅ 示例:创建一个简单的 Person 类 class Person {// 属性String name;…...

Java虚拟机 - 程序计数器和虚拟机栈
运行时数据结构 Java运行时数据区程序计数器为什么需要程序计数器执行流程虚拟机栈虚拟机栈作用虚拟机栈核心结构运行机制 Java运行时数据区 首先介绍Java运行时数据之前,我们要了解,对于计算机来说,内存是非常重要的资源,因为内…...
SpringMVC04所有注解按照使用位置划分| 按照使用层级划分(业务层、视图层、控制层)
目录 一、所有注解按照使用位置划分(类、方法、参数) 1. 类级别注解 2. 方法级别注解 3. 参数级别注解 4. 字段/返回值注解 二、按照使用层级划分(业务层、视图层、控制层) 1、控制层(Controller Layer&#x…...

新能源汽车产业链图谱分析
1. 产业定义 新能源汽车是指采用非常规的车用燃料作为动力来源,综合车辆的动力控制和驱动方面的先进技术,形成的具有新技术、新结构、技术原理先进的汽车。 新能源车包括四大类型:混合动力电动汽车(HEV)、纯电动汽车…...

如何在PyCharm2025中设置conda的多个Python版本
前言 体验的最新版本的PyCharm(Community)2025.1.1,发现和以前的版本有所不同。特别是使用Anaconda中的多个版本的Python的时候。 关于基于Anaconda中多个Python版本的使用,以及对应的Pycharm(2023版)的使用,可以参考…...
005 深度优先搜索(DFS)算法详解:图解+代码+经典例题
📌 什么是深度优先搜索? 深度优先搜索(Depth-First Search,DFS)是算法竞赛和面试中最高频的暴力搜索算法之一。其核心思想是“一条路走到黑”,从起点出发,优先探索最深的节点,直到无…...

maven快速上手
之前我们项目如果要用到其他额外的jar包,需要自己去官网下载并且导入。但是有maven后,直接在maven的pom.xml文件里用代码配置即可,配置好后maven会自动帮我们联网下载并且会自动导入该jar包 在右边的maven中,我们可以看到下载安装…...

cplex12.9 安装教程以及下载
cplex 感觉不是很好找,尤其是教育版,我这里提供一个版本,在下面的图可以看到,不仅可以配置matlab,也可以配置vs,现在拿vs2017来测试一下,具体文件的文件有需要的可以复制下面的链接获取 我用网盘分享了「c…...

甘特图实例 dhtmlxGantt.js
本文介绍了如何使用dhtmlxGantt库创建一个基础的甘特图示例,并对其进行汉化和自定义配置。首先,通过引入dhtmlxgantt.css和dhtmlxgantt.js文件初始化甘特图。接着,通过设置gantt.i18n.setLocale("cn")实现核心文本的汉化࿰…...
AMD硬件笔试面试题型解析
本专栏预计更新60期左右。当前第12期 这个系列通过在各类网上搜索大厂公开的笔试和面试题目,然后构造相关的知识点矩阵,让大家对核心的知识点有更深的认识,这个过程虽然耗时费力,但大厂的很多题目确实非常巧妙,很有代表性。由于官方没有发布过这样的题库,所以文章中的题目…...

视频剪辑 VEGAS - 配置视频片段保持原长宽比
VEGAS 配置视频片段保持原长宽比 右击视频片段 -> 选择【开关】 -> 勾选【保持长宽比】 右击视频片段 -> 点击【属性】 -> 弹出【属性】窗口 点击【媒体】 -> 选择【像素宽高比】为【1,0000(方形)】...

力扣 54 .螺旋矩阵
文章目录 题目介绍题解 题目介绍 题解 代码如下: class Solution {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> res new ArrayList<>();if (matrix.length 0){return res;}int l 0, r matrix[0].length - 1, t 0, b…...

四、【API 开发篇 (上)】:使用 Django REST Framework 构建项目与模块 CRUD API
【API 开发篇 】:使用 Django REST Framework 构建项目与模块 CRUD API 前言为什么选择 Django REST Framework (DRF)?第一步:创建 Serializers (序列化器)第二步:创建 ViewSets (视图集)第三步:配置 URLs (路由)第四步…...
python使用pycharm和conda 设置默认使用清华镜像
将步骤分为Conda配置和PyCharm配置两部分。Conda部分包括添加镜像源、调整优先级、更新环境。PyCharm部分需要根据版本说明如何添加镜像源到项目解释器设置中。同时,需要验证配置是否成功,并提醒常见问题,比如路径错误或缓存问题。需要确保引…...
Prometheus+Grafana实现对服务的监控
PrometheusGrafana实现对服务的监控 前言:PrometheusGrafana实现监控会更加全面,监控的组件更多 Prometheus官网 https://prometheus.io/docs/prometheus/latest/getting_started/ Grafana官网 https://grafana.com/docs/ 一、安装PrometheusGrafana 这…...

ARM笔记-ARM伪指令及编程基础
第四章 ARM伪指令及编程基础 4.1 伪指令概述 4.1.1 伪指令定义 人们设计了一些专门用于指导汇编器进行汇编工作的指令,由于这些指令不形成机器码指令,它们只是在汇编器进行汇编工作的过程中起作用,所以被叫做伪指令。 4.1.2 伪指令特征 …...

Python入门手册:Python基础语法
Python是一种简洁、易读且功能强大的编程语言,非常适合初学者入门。无论你是编程新手,还是有一定编程基础但想学习Python的开发者,掌握Python的基础语法都是迈向高效编程的第一步。本文将详细介绍Python的基本语法,包括变量和数据…...
SpringBoot-SpringBoot源码解读
SpringBoot-SpringBoot源码解读 一、Spring Boot启动过程概述 Spring Boot通过一系列的类和机制,简化了Spring应用的启动流程。当你执行SpringApplication.run()时,Spring Boot会自动完成应用的初始化、环境配置、组件加载、自动配置等任务,…...

CAD如何导出PDF?PDF如何转CAD?详细教程来了
浩辰CAD看图王是一款功能强大的CAD图纸查看与编辑工具,其核心功能之一便是支持CAD与PDF格式的互转。下面是CAD看图王输出PDF和PDF转CAD功能的详细介绍及操作步骤: 一、输出PDF功能 看图王可以将CAD图纸转换为PDF格式,是文件在不同的设备上显…...