opencv学习17——油画效果
一、算法描述
图像油画效果
1.类似于马赛克及毛玻璃效果,也是卷积操作的一种
2.基本原理:将在计算某点像素值时,通过计算周围区域的某些像素值得到本点像素值
1)分别读取彩色图、灰度图,将灰度全值(0-255)划分灰度等级
2)确定统计窗口大小
3)确定统计窗口内 灰度图各像素的对应灰度等级,获取灰度等级频率最高的灰度等级(最高频灰度等级)
4)遍历灰度图统计窗口,确定属于最高频灰度等级的像素位置,并计算彩色图中对应位置的统计值(最大值、平均值)
5)将统计值赋值,得到油画效果图
3.此代码中,为了快速运行,处理范围设置为300*300,而不是原图像矩阵;进一步简化,在遍历时横向和纵向都进行了跳跃,并相应地在最后填充像素值时进行统一填充(可以通过gap进行设置,如果为1,图像处理较慢,为3时,图像呈现明显的斑块状,因为周围9个像素点都是统一填充的,设置2时比较折中)
二、代码实现
# -*- coding: utf-8 -*-
# @Time : 2020/7/5 8:11
# @Author : Zhao HL
import cv2
import numpy as npbasicSize = 4
grayLevelSize = 8
gap = 2
Mean_sta = Trueimg = cv2.imread(r'E:\_Python\00_test\0.png', 1)
grayImg = cv2.imread(r'E:\_Python\00_test\0.png', 0)
imgHeight, imgWidth = 300, 300dstImg = np.zeros(img.shape, np.uint8)
def comp_max(tp1,tp2):if tp1[0]<tp2[0]:tp1[0] = tp2[0]if tp1[1]<tp2[1]:tp1[1] = tp2[1]if tp1[2]<tp2[2]:tp1[2] = tp2[2]return tp1for i in range(basicSize, imgHeight - basicSize, gap):for j in range(basicSize, imgWidth - basicSize, gap):# 灰度等级统计grayLevel = np.zeros(grayLevelSize, np.uint8) # 存放各个灰度等级的个数graySum = [0, 0, 0] # 用于最后高频灰度等级均值计算# 对小区域进行遍历统计for m in range(-basicSize, basicSize):for n in range(-basicSize, basicSize):pixlv = int(grayImg[i + m, j + n] / (256 / grayLevelSize)) # 判断像素等级grayLevel[pixlv] += 1 # 计算对应灰度等级个数# 找出最高频灰度等级及其索引mostLevel = np.max(grayLevel)mostLevelIndex = np.argmax(grayLevel)level_pixNum = 0# 计算最高频等级内的所有灰度值的均值for m in range(-basicSize, basicSize):for n in range(-basicSize, basicSize):if int(grayImg[i + m, j + n] / (256 / grayLevelSize)) == mostLevelIndex:level_pixNum+=1if Mean_sta:graySum += img[i + m, j + n]else:graySum = comp_max(graySum,img[i + m, j + n])if Mean_sta:graySum = graySum/level_pixNum# 写入目标像素for m in range(gap):for n in range(gap):dstImg[i + m, j + n] = graySumcv2.imshow('', dstImg)
cv2.waitKey(0)
cv2.destroyAllWindows()print('complete')
三、处理前后效果对比:
原图:
mean
max
opencv学习17——油画效果相关推荐
- Unity Shader学习:油画效果
Unity Shader学习:油画效果 油画效果在学习浅墨大神的文章时看到的比较有趣,但是原文中也没详细的算法介绍如何实现,这里就先直接拿来用吧,UI和屏幕后处理都可以用,算法也看的不是很明白,好像是 ...
- Python OpenCV绘画实现 油画效果、水彩效果
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:代码医生 OpenCV是功能强大的计算机视觉库,具有强大的图像处理工 ...
- 用python将图片变为油画_Python OpenCV绘画完成 油画效果、水彩效果
序言 文中的文本及图片来自互联网,仅作学习培训.沟通交流应用,不具备一切商业行为,著作权归著作人全部,如不太好请立即在线留言以作解决. 创作者:编码医师 OpenCV是功能齐全的人工智能算法库,具备强 ...
- OpenCV学习(17) 细化算法(5)
本章我们看下Pavlidis细化算法,参考资料http://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/con ...
- Python+OpenCV学习(17)---摄像机标定
Python+OpenCV学习(17)---摄像机标定 原文:http://blog.csdn.net/firemicrocosm/article/details/48594897 利用python学 ...
- OpenCV油画效果
OpenCV油画效果 油画效果 介绍 代码 结果 油画效果 介绍 图像在颜色空间默认颜色空间COLOR_BGR2GRAY中转换.对于图像中的每个像素,程序都会计算尺寸为2 * size + 1的相邻像 ...
- opencv学习笔记17:梯度运算之laplacian算子及其应用
laplacian算子理论 前文介绍了sobel算子及其函数使用 和scharr算子及其函数使用 使用方法 不同算子比较 sobel,和scharr算子:右边121列-左边121列.右边-3,10,3 ...
- 基于OpenCV实现的图像油画效果代码(高效率、低耗时的C++代码-带详细注释)
油画的特点是其颜色值很有限,并且笔比较粗,所以我们要实现油画效果关键就是利用运算实现这两点. 本文实现的图像油画效果代码原理如下: 一.将原图进行灰度化处理后将灰度值线性压缩到0~level,得到图像 ...
- youcans 的 OpenCV 学习课—10. 图像复原与重建
youcans 的 OpenCV 学习课-10. 图像复原与重建 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 图像复原是对图像退化过程建模,并以图像退化的先验知识来恢复 ...
最新文章
- Banner长得丑,网站没朋友
- 3w并发mysql架构_(DBA之路【一】)mysql 基本架构
- mysql dos 下切换连接_如何在dos下连接进入mysql对数据库进行操作
- 架构设计工作笔记004---架构中常见的概念积累--随时更新
- 随想录(一种新的读写锁的写法)
- 查询SQL中日期条件
- 可以势利,不可以小人
- 【语音识别】获得MOOC视频的文本(字幕)
- 中心移动平均_Excel数据分析——移动平均法预测分析
- csm和uefi_传统bios引导与uefi引导之比较
- 【多线程】如何保证线程安全
- [LCT BZOJ]2959: 长跑
- 百度贴吧个人主页_回望人人网/新浪博客/百度贴吧时
- matlab 设计数字滤波器,基于Matlab的FIR数字滤波器设计
- 科学计算机r系数的操作,相关系数,确定系数(R^2)计算公式与在线计算器_三贝计算网_23bei.com...
- Sqlite出现database is locked
- 联想ideapad110-151kb
- 关于正态总体的样本均值与样本方差的重要结论
- 南华大学计算机系宿舍,南华大学宿舍条件,宿舍环境图片(10篇)
- Linux下红外线适配器的使用
热门文章
- 西门子滚筒洗衣机教程_西门子滚筒洗衣机图解
- 【slam-2020-01-02】扩展应用
- 惠普PAVILION Gaming NB 15-ak039TX触摸板关闭
- 【Android应用实例之四】计时器之通过ServiceBroadcastReceiver实现UI动态更新
- embed 基本用法
- Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表
- 关闭脚本运行慢的提示
- html编码后台转换,html unicode编码转换方法
- UG拆电极的认识以及注意事项
- 身份证复印件用时最好签注用途 否则可引发风险