使用Python,OpenCV制作不同风格的素描图(正常,漫画,写实风格)

news/2024/9/21 20:41:17

使用Python,OpenCV制作不同风格的素描图(正常,漫画,写实风格)

这篇博客将介绍如何使用Python,OpenCV制作不同风格的素描图(正常风格,漫画风格,写实风格)。

1. 效果图

原始图 VS 正常风格素描图 VS 漫画风格素描图 VS 写实风格素描图如下:

在这里插入图片描述
原始图 VS 正常风格素描图 VS 漫画风格素描图 VS 写实风格素描图如下:

在这里插入图片描述

源码

# 照片转字符画
# USAGE
# python img2zfh.py --image images/ym.jpg
# python img2zfh.py --image images/comic.jpg
import argparseimport cv2
import imutils# 构建命令行参数及解析
# --image 要转字符画的图像
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=False, default="images/ym.jpg",help="path to input image to be ZFH'd")
args = vars(ap.parse_args())def zcfg(src_image, dst_image):img_rgb = cv2.imread(src_image)cv2.imshow("origin", imutils.resize(img_rgb, width=300))img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)# adaptiveThreshold()会在图片的每一个小的局部区域内进行二值化操作,因此对于一些清晰度比较高、色彩区分比较细腻的图片,就会出现上面这样密密麻麻的情况。img_edge = cv2.adaptiveThreshold(img_gray, 255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY, blockSize=3, C=2)cv2.imwrite(dst_image, img_edge)cv2.imshow("zcfg_dst", imutils.resize(img_edge, width=300))cv2.waitKey(0)def mhfg(src_image, dst_image):img_rgb = cv2.imread(src_image)img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)img_gray = cv2.medianBlur(img_gray, 5)  # 漫画风格# adaptiveThreshold()会在图片的每一个小的局部区域内进行二值化操作,因此对于一些清晰度比较高、色彩区分比较细腻的图片,就会出现上面这样密密麻麻的情况。img_edge = cv2.adaptiveThreshold(img_gray, 255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY, blockSize=3, C=2)cv2.imwrite(dst_image, img_edge)cv2.imshow("mhfg_dst", imutils.resize(img_edge, width=300))cv2.waitKey(0)def xsfg(src_image, dst_image):img_rgb = cv2.imread(src_image)img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)img_blur = cv2.GaussianBlur(img_gray, ksize=(21, 21),sigmaX=0, sigmaY=0)  # 写实风格# cv2.divide()本质上进行的是两幅图像素级别的除法操作,其得到的结果可以简单理解为两幅图之间有明显差异的部分。img_edge = cv2.divide(img_gray, img_blur, scale=255)cv2.imwrite(dst_image, img_edge)cv2.imshow("xsfg_dst", imutils.resize(img_edge, width=300))cv2.waitKey(0)src_image = args["image"]
zcfg(src_image=src_image, dst_image=src_image.replace(".jpg", "_zc.jpg"))
mhfg(src_image=src_image, dst_image=src_image.replace(".jpg", "_mh.jpg"))
xsfg(src_image=src_image, dst_image=src_image.replace(".jpg", "_xs.jpg"))

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

使用Python,OpenCV反转视频

使用Python,OpenCV反转视频 这篇博客将介绍如何使用Python,OpenCV反转视频,可以通过先把帧都保存下来在反转但太浪费时间和内存,用本文的方法又简洁又快速。 效果图 原始视频: 反转视频: 原理 cv.CAP_PROP_FRAME_COUNT 视频文件中的帧数 cv.CAP_PROP_POS_FRAMES …

蓝图基础

蓝图基础 hello1先输出,延迟1.0秒后hello2再输出 设置变量 先输出hello world,延迟1.0秒之后再输出helloworld2, 逐帧输出: 每隔0.2秒打印一行字符串 打印倒三角形 自定义函数计算三角形面积 调用自定义函数

记录|深度学习100例-卷积神经网络(CNN)minist数字分类 | 第1天

记录|深度学习100例-卷积神经网络(CNN)minist数字分类 | 第2天 1. minist0-9数字分类效果图 数据集如下: 分类及预测图如下:预测标签值和真实标签值如下图所示,成功预测 训练Loss/Accuracy图如下: 源…

使用SharpPCap在C#下进行网络抓包

转自http://www.cnblogs.com/billmo/archive/2008/11/09/1329972.html 在做大学最后的毕业设计了,无线局域网络远程安全监控策略那么抓包是这个系统设计的基础以前一直都是知道用winpcap的,现在网上搜了一下,有用C#封装好了的,很好用下面是其中的几个用法这个类库作者的主页:ht…

卷积结构及其计算

文章目录卷积结构及其计算卷积及其参数设计卷积计算优化Winograd池化卷积计算常用方法经典卷积神经网络模型结构LeNet-5AlexNetVGGGoogleNetResNet卷积结构及其计算 卷积及其参数设计 局部连接:视觉具有局部性,充分考虑领域信息,局部稠密链接…

记录|深度学习100例-卷积神经网络(CNN)服装图像分类 | 第3天

记录|深度学习100例-卷积神经网络(CNN)服装图像分类 | 第3天 1. 服装图像分类效果图 原始训练图如下: 测试图:预测标签及实际标签如下: 可以看到正确预测 训练损失/准确度图: 2. 源码 # 深度学习10…

即将到来的日子 ,你会寂寞吗?

见到如此的数字,不知道身边的你是否会想起一些往事,我想这一刻很难去形容,因为哥也会有寂寞的一天。 从来不太喜欢的节日,但是每逢到来的时候,总会有一阵阵的痛。今天不是好的节日,在地球上某一个角落&…

并行及分布式框架

文章目录并行及分布式框架并行计算常用技术共享内存系统和分布式内存系统概述OPENMP技术OpenMP编程模型OPENMP API构成编译伪指令运行时函数环境变量OpenMP常用指令OpenMP常用函数OpenMP 环境变量MPI技术MPI消息传递Nvidia NCCL技术并行及分布式框架 并行计算常用技术 共享内…