一、算法描述

图像油画效果

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——油画效果相关推荐

  1. Unity Shader学习:油画效果

    Unity Shader学习:油画效果 油画效果在学习浅墨大神的文章时看到的比较有趣,但是原文中也没详细的算法介绍如何实现,这里就先直接拿来用吧,UI和屏幕后处理都可以用,算法也看的不是很明白,好像是 ...

  2. Python OpenCV绘画实现 油画效果、水彩效果

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:代码医生 OpenCV是功能强大的计算机视觉库,具有强大的图像处理工 ...

  3. 用python将图片变为油画_Python OpenCV绘画完成 油画效果、水彩效果

    序言 文中的文本及图片来自互联网,仅作学习培训.沟通交流应用,不具备一切商业行为,著作权归著作人全部,如不太好请立即在线留言以作解决. 创作者:编码医师 OpenCV是功能齐全的人工智能算法库,具备强 ...

  4. OpenCV学习(17) 细化算法(5)

    本章我们看下Pavlidis细化算法,参考资料http://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/con ...

  5. Python+OpenCV学习(17)---摄像机标定

    Python+OpenCV学习(17)---摄像机标定 原文:http://blog.csdn.net/firemicrocosm/article/details/48594897 利用python学 ...

  6. OpenCV油画效果

    OpenCV油画效果 油画效果 介绍 代码 结果 油画效果 介绍 图像在颜色空间默认颜色空间COLOR_BGR2GRAY中转换.对于图像中的每个像素,程序都会计算尺寸为2 * size + 1的相邻像 ...

  7. opencv学习笔记17:梯度运算之laplacian算子及其应用

    laplacian算子理论 前文介绍了sobel算子及其函数使用 和scharr算子及其函数使用 使用方法 不同算子比较 sobel,和scharr算子:右边121列-左边121列.右边-3,10,3 ...

  8. 基于OpenCV实现的图像油画效果代码(高效率、低耗时的C++代码-带详细注释)

    油画的特点是其颜色值很有限,并且笔比较粗,所以我们要实现油画效果关键就是利用运算实现这两点. 本文实现的图像油画效果代码原理如下: 一.将原图进行灰度化处理后将灰度值线性压缩到0~level,得到图像 ...

  9. youcans 的 OpenCV 学习课—10. 图像复原与重建

    youcans 的 OpenCV 学习课-10. 图像复原与重建 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 图像复原是对图像退化过程建模,并以图像退化的先验知识来恢复 ...

最新文章

  1. Banner长得丑,网站没朋友
  2. 3w并发mysql架构_(DBA之路【一】)mysql 基本架构
  3. mysql dos 下切换连接_如何在dos下连接进入mysql对数据库进行操作
  4. 架构设计工作笔记004---架构中常见的概念积累--随时更新
  5. 随想录(一种新的读写锁的写法)
  6. 查询SQL中日期条件
  7. 可以势利,不可以小人
  8. 【语音识别】获得MOOC视频的文本(字幕)
  9. 中心移动平均_Excel数据分析——移动平均法预测分析
  10. csm和uefi_传统bios引导与uefi引导之比较
  11. 【多线程】如何保证线程安全
  12. [LCT BZOJ]2959: 长跑
  13. 百度贴吧个人主页_回望人人网/新浪博客/百度贴吧时
  14. matlab 设计数字滤波器,基于Matlab的FIR数字滤波器设计
  15. 科学计算机r系数的操作,相关系数,确定系数(R^2)计算公式与在线计算器_三贝计算网_23bei.com...
  16. Sqlite出现database is locked
  17. 联想ideapad110-151kb
  18. 关于正态总体的样本均值与样本方差的重要结论
  19. 南华大学计算机系宿舍,南华大学宿舍条件,宿舍环境图片(10篇)
  20. Linux下红外线适配器的使用

热门文章

  1. 西门子滚筒洗衣机教程_西门子滚筒洗衣机图解
  2. 【slam-2020-01-02】扩展应用
  3. 惠普PAVILION Gaming NB 15-ak039TX触摸板关闭
  4. 【Android应用实例之四】计时器之通过ServiceBroadcastReceiver实现UI动态更新
  5. embed 基本用法
  6. Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表
  7. 关闭脚本运行慢的提示
  8. html编码后台转换,html unicode编码转换方法
  9. UG拆电极的认识以及注意事项
  10. 身份证复印件用时最好签注用途 否则可引发风险