图像处理:图像特效之油画效果

利用OpenCV+python对图片进行处理产生油画的效果

算法可以分为五步:

  • 1、获取图像的灰度(gray)图片
  • 2、设计一个小方框(4x4 or 8x8 or 10x10等),统计每个小方框的像素值
  • 3、将0-255的灰度值划分成几个等级,并把第二步处理的结果映射到所设置的各个等级中,并计数
  • 4、找到每个方框中灰度等级最多的所有的像素,并且求取这些像素的均值
  • 5、用统计出来的平均值来替代原来的像素值

        因为用了很多for循环, 所以,计算复杂,图像处理运行时间较长,可以选用尺寸较小的图片来进行测试,程序还有很多可以优化的地方,再配合一些修图工具(如PS),对图片的细节进行修补,感觉可以裱起来了。 

 

import cv2
import numpy as npimg = cv2.imread('image5.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dst = np.zeros((height, width, 3), np.uint8)
pixel_class = 4
section = int(256/pixel_class)
# 用两层for循环来遍历图片的每个数据
for i in range(3, height-3):for j in range(3, width-3):# 当前程序中定义的灰度等级是4个# 定义一个数组来装载这4个等级内的像素个数array1 = np.zeros(pixel_class, np.uint8)# 当前程序中定义的小方块是6x6的for m in range(-3, 3):for n in range(-3, 3):# p1是对该像素点等级段的划分,用下标表示0-3p1 = int(gray[i+m, j+n]/section)# 接下来对像素等级进行计数,array1的下标代表像素等级,# 值则代表处在该像素等级小方框内像素的个数array1[p1] = array1[p1] + 1# 接下来判断在这个小方框内哪一个像素段的像素最多currentMax = array1[0]l = 0  # 这里设置一个l用来记录像素段计数最多的数组下标for k in range(0, pixel_class):if currentMax < array1[k]:currentMax = array1[k]l = k# 均值处理u = v = w = 0for m in range(-3, 3):for n in range(-3, 3):if gray[i+m,j+n] >= (l*section) and gray[i+m, j+n] <= ((l+1)*section):(b, g, r) = img[i+m, j+n]u += bv += gw += ru = int(u/array1[l])v = int(v/array1[l])w = int(w/array1[l])dst[i, j] = [u, v, w]
cv2.imshow('dst', dst)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('oil_painting.png', dst)

 

​​

 

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

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

相关文章

socket模拟http的登陆_python模拟登陆知乎(最新版)

为啥要写这一篇文章呢&#xff1f;&#xff08;主要是qq群内有人在模拟登陆知乎&#xff0c;一直不成功&#xff09;然后我抓包看了下&#xff0c;发现知乎登陆页已经改版了&#xff0c;而且难度大大提高了。开始抓包首先内&#xff0c;还是打开知乎首页&#xff0c;然后输入账…

图像识别:利用KNN实现手写数字识别(mnist数据集)

图像识别&#xff1a;利用KNN实现手写数字识别&#xff08;mnist数据集&#xff09; 步骤&#xff1a; 1、数据的加载&#xff08;trainSize和testSize不要设置的太大&#xff09; 2、k值的设定&#xff08;不宜过大&#xff09; 3、KNN的核心&#xff1a;距离的计算 4、k个最近…

一个与生命起源有关的悖论终于得到了解决

来源&#xff1a;原理当Caitlin Cornell低头看显微镜时&#xff0c;她看见黑色的背景下浮现出一些大大的明亮斑点。它们就像微缩的太阳&#xff0c;在深色的太空幕布下闪耀着光芒。Conell回忆起把这些斑点展示给她的导师Sarah Keller时的兴奋&#xff0c;那时她们意识到&#x…

python ffmpy3与FFmpeg的安装

python ffmpy3与FFmpeg的安装 安装命令&#xff1a; pip install ffmpy3 去官网下载FFmpeg&#xff0c;根据自身电脑版本下载相应安装包 http://ffmpeg.org/download.html from ffmpy3 import FFmpeg ff FFmpeg(inputs{test.mp4: None},outputs{output.ts: None}) print(f…

千兆网线8根线定义图_家中的网线断裂/不够长,如何接线才最合适?

网线作为互联网时代不可或缺的主角&#xff0c;更是家装布线和工程施工中的常客。网线相对来说是很脆弱的&#xff0c;特别是一些质量一般的网线&#xff0c;在很多情况下都可能会被弄断&#xff0c;比如老鼠咬、过度拉伸、摆在地下人踩的人多了、电起火烧断、不小心被夹断等等…

中国决定以“六大政策”推动新一代人工智能发展

来源&#xff1a;智造智库以新一代人工智能为代表的新一轮科技革命和产业变革已经呈现出强大的影响力和生命力&#xff0c;人工智能技术对生产、流通、消费等形成高度渗透、跨界融合&#xff0c;新业态、新模式不断涌现&#xff0c;给以往的产业生态、社会分工、行业和企业边界…

第三次站立会议

项目进展&#xff1a;项目主体开始实施&#xff0c;我们在前期分工准备的同时开始讨论连连看的具体式样&#xff0c;开始上网参考其他项目的式样&#xff0c;搜集图片素材&#xff0c;为具有我们特色的连连看项目做准备。 存在问题&#xff1a;搜集素材时组员对项目的风格式样见…

ffmpy3与ffmpeg的简单使用

安装 python ffmpy3与ffmpeg的安装 https://blog.csdn.net/qq_40962368/article/details/90748852 ffmpy3的介绍&#xff1a; https://ffmpy3.readthedocs.io/en/latest/ ffmpy3是一个用于FFmpeg的Python包装器&#xff0c;最初是从ffmpy项目派生出来的。它根据提供的参数及…

5G将改变技术格局的8个原因(上)

来源&#xff1a;CESAsia5G是引领第四次工业革命的通用技术。为了说明5G如何推动技术创新的飞跃&#xff0c;威讯(Verizon)首席执行官卫翰思(Hans Vestberg)在2019年国际消费电子产品展(CES 2019)主题演讲中罗列了5G所带来的八项有可能改变世界的能力。通用能力1和2&#xff1a…

matlab频谱分析_罗德与施瓦茨两款新的信号和频谱分析仪 具有多种频率型号

射频元器件、发射机和模组的制造商正面临着复杂的宽带射频信号测量任务和严苛的上市时间要求。特别是随着5G NR技术的进步&#xff0c;工程师在研发和生产中需要使用支持5G带宽和RF需求的测试解决方案分析无线通信信号。罗德与施瓦茨的新型中档信号和频谱分析仪R&SFSV3000和…

ArcEngine一些代码实现(转载)

转自&#xff1a;http://xitong.iteye.com/blog/1715759 ArcEngine 一些实现代码 ●● 目录&#xff1a; A1 …………实现&#xff1a;鼠标滑过显示要素 tip A2 …………实现&#xff1a;通过鼠标选择要素并高亮显示&#xff08;ISelectionEnvironment&#xff09; A3 ……………

tensorboard可视化经常出现的两个问题

tensorboard经常出现的两个问题 TensorFlow经常使用tf.summary.FileWriter("路径", sess.graph)函数将训练的图信息保存到日志中 使用TensorBoard读取读取并展示日志&#xff0c;使用如下语句&#xff1a; tensorboard --logdir日志所在路径 一、OSError: [Errn…

从电报到5G,细说60年移动通信史的7个变革

来源&#xff1a;司南物联今天&#xff0c;我们不止介绍5G&#xff0c;还要给大家介绍通信史这60多年来的趣事。电话“发明者”贝尔居然是小偷&#xff1f;早在1871年&#xff0c;意大利人安东尼奥梅乌奇就开始为自己的Teletrofono电话系统去申请专利&#xff0c;他花10美元买了…

联通5g接入点设置参数_联通5G 所向无前

10月31日&#xff0c;正值联通5G商用1周年的日子&#xff0c;上海联通自商用上市之初便策划推出“联通5G点亮全城”系列活动&#xff0c;践行“让每个市民在第一时间感受5G的脉搏”。北区分公司延续联通5G点亮全城的热度、结合S10英雄联盟总决赛契机&#xff0c;在Nice奈锶电竞…

mAP与IOU的简单介绍

mAP 在评价一个检测算法的时候&#xff0c;主要看两个标准&#xff0c;即是否正确预测了框内的物体类别&#xff1b;预测的框和人工标注框的重合程度。这两个的量化指标分别是mAP&#xff08;mean Average Precision&#xff09;和IOU&#xff08;Intersection Over Union&…

海外又曝出伪AI明星公司!人工智能是个巨大泡沫?

来源&#xff1a; 维识教育科技昨日&#xff0c;《华尔街日报》曝光了一家印度伪AI明星公司Engineer.ai。这家总部设在美国洛杉矶和英国伦敦的公司&#xff0c;一直以来都声称&#xff1a;使用AI技术在很大程度上实现了移动App的自动化开发。在2018年11月&#xff0c;Engineer.…

无法安装64位版本的office,因为在您的PC上找到了以下32位程序:microsoft visio professional 2013

这是因为卸载microsoft visio professional 2013时没有卸载干净&#xff0c;即残留了注册表 解决方法&#xff1a; 鼠标按win标识R&#xff0c;打开运行对话框&#xff0c;输入&#xff1a;regedit找到键值&#xff1a;HKEY_CLASSES_ROOT点击&#xff1a;HKEY_CLASSES_ROOT&a…

踩内存是什么意思啊_网络资讯:0x0000008e蓝屏代码是什么

今天来说一下0x0000008e蓝屏代码是什么这方面的一些讯息&#xff0c;不少朋友对0x0000008e蓝屏代码是什么这方面的一些讯息颇感兴趣的&#xff0c;小编今天就整理了一些信息&#xff0c;希望对有需要的朋友有所帮助。0x0000008e 蓝屏代码所代表的意思为“内存错误”、“软件不兼…

利用卷积神经网络实现人脸识别(python+TensorFlow)

利用CNN卷积神经网络实现人脸识别&#xff08;pythonTensorFlow&#xff09; 使用的人脸数据是耶鲁大学的一个人脸数据集Yale_64x64.mat&#xff0c;数据集已经上传Yale 64x64.mat 程序&#xff1a; 使用Yale_64x64.mat人脸数据&#xff0c;利用CNN卷积神经网络实现人脸识别 …

ant语法和规范

一、前言&#xff1a; 以前在做JavaEE项目的时候曾经听说过这个名字&#xff0c;但是由于没有用到&#xff0c;所以也没有去学习。最近在研究Android打包的时候&#xff0c;看了下build.xml文件&#xff0c;甚是迷糊&#xff0c;于是学习一下&#xff0c;稍有心得。 二、什么是…