当前位置: 首页 > news >正文

CodeBuddy 实现图片转素描手绘工具

本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴

前言

最近在社交媒体上,各种素描风格的图片火得一塌糊涂,身边不少朋友都在分享自己的 “素描照”,看着那些黑白线条勾勒出的独特韵味,我心里直痒痒,特别想自己动手试试,把喜欢的彩色图片变成黑白素描手绘风格。在网上找了不少在线工具,要么功能有限,要么画质差强人意,我就琢磨着能不能在本地实现这个功能,毕竟自己动手,不仅能按需调整效果,还更有成就感。image.png
一番研究后,我发现使用 Python 的 opencv 模块就可以实现图片转素描的功能,可我虽然对 Python 有一定了解,但真要从零开始写代码,还是有点害怕了。就在这时,CodeBuddy 进入了我的视线。CodeBuddy 拥有强大的代码智能补全和实时语法检查功能,对于我这种偶尔会粗心犯错的人来说,简直太友好了,能及时发现并纠正代码中的错误,大大提高了开发效率。而且它还支持多种编程语言和框架,和 opencv 模块搭配使用毫无压力,还能提供很多相关的代码示例和优化建议,让我在开发过程中少走了很多弯路。
image.png

使用CodeBuddy完成图片的素描化

我们打开vscode进入到拓展中直接搜索CodeBuddy,点击安装这个插件就行了
image.png
我们点击左侧的插件图标就能进行使用了
还是老样子先生成README文件
对ai说:

我想实现图片转素描手绘工具,本工具主要使用python的opencv模块编写,将彩色图片转成黑白素描手绘图,你帮我生成下README文件

image.png
然后直接到Craft艾特这个文件进行直接开发,代码生成很快
image.png
代码生成好了之后我们直接运行程序,在终端输入命令python code.py
让我们选择一个图片并且文件的路径必须得是英文路径,不能包含中文
image.png
然后他就生成出了一张素描画,我们可以和原照片对比下,效果还是挺不错的,我这里的代码配置参数直接就是默认的,你们也可以进行设置的
35a6b50c3ad9fe58d8a52c2fca0a9e84.jpg

相关代码如下:

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,相信它会给你带来惊喜!

相关文章:

  • LINUX 524 rsync+inotify 调试(问题1:指定端口无法同步/已通过;问题2:rsync.log文件中时间不显示/已显示)
  • 从 0 到 1!Java 并发编程基础全解析,零基础入门必看!
  • Git研究
  • 【音频】drc 限幅器、多带限幅器、压缩器、多带压缩器
  • 智能合约:开启数字经济新时代的“魔法契约”
  • AI Agent开发第74课-解构AI伪需求的魔幻现实主义
  • C语言创意编程:用趣味实例玩转基础语法(1)
  • 爬虫实战之爬微博图片:xpath的具体运用
  • 全球化 2.0 | 云轴科技ZStack助力中东智慧城市高性能智能安防云平台
  • AI 笔记 - 模型优化 - 注意力机制在目标检测上的使用
  • SDL2常用函数:SDL_Texture 数据结构及使用介绍
  • CodeBuddy实现pdf批量加密
  • 1、初识YOLO:目标检测的闪电战
  • 神经算子项目实战:数据分析、可视化与实现全过程
  • Spring框架--IOC技术
  • vc++在Windows中查找扬声器输出的当前音量级别
  • 理解 Redis 事务-20 (MULTI、EXEC、DISCARD)
  • C++ 反向迭代器(Reverse Iterator)实现详解
  • PyQt5高效布局指南:QTabWidget与QStackedWidget实战解析
  • Spark 中,创建 DataFrame 的方式(Scala语言)
  • WordPress软件连接不了网站/广告营销策略有哪些
  • 沈阳网站建设/必应搜索网站
  • 大丰网站制作/长沙seo网站管理
  • 怎么成立网站/黑龙江网络推广好做吗
  • 企业网站建设的好处/google网页搜索
  • 政府门户网站建设发言材料/互联网营销师含金量