OpenCV-Python实现油画效果的实例


Posted in Python onJune 08, 2021

油画的实现原理

油画简单的理解是带有艺术感的图像,色彩相对于原图要更加鲜艳,但却是失真的。

而且对于喜欢欣赏艺术的读者,肯定或多或少关注过油画,油画并不细腻,而且小部分因为色块的堆积非常模糊。所以,我们实现油画的原理是:逐行对图像进行处理,使周围相邻距离的像素进行打乱。

至于打乱的算法,你可以随机设计。不过,需要注意的是在处理到图像边缘时,比如左下角最后一个像素,那么如果打乱其像素,取右边的显然不可取,因为右边没有像素会导致数组越界。所以在处理油画时,可以人为的剪掉部分边缘像素用于混淆。

还有,油画因为用色大胆,所以我们需要增强图像的色彩空间。而python的PIL库有一个现成的类ImageEnhance。该类专门用于图像的增强处理,不仅可以增强图像的亮度,对比度,色度,还可以增强图像的锐度,因此我们实现油画可以通过它快速实现图像增强的操作。

下面,我们来看看其图像增强如何实现。代码如下:

enh_col=ImageEnhance.Color(img)
color = 2.0
new_img = enh_col.enhance(color)

此处的img是PIL读取的图片,如果想PIL读取图片转到OpenCV读取图片的格式可以通过如下代码完成:

new_img = cv2.cvtColor(np.asarray(new_img), cv2.COLOR_RGB2BGR)

其中,new_img为PIL读取的图片格式。

而enhance函数的参数color代表了图像色彩的丰富程度和饱和度,数值为1时保持色度不变,数值增加表示色度比例增加,以此达到图像增强的效果。

实现油画效果

既然已经了解了实现油画效果的原理。下面,我们直接上代码来完成油画的操作。具体代码如下所示:

# 油画效果
def oil_effect(img):
    h, w, n = img.shape
    new_img = np.zeros((h - 2, w, n), dtype=np.uint8)
    for i in range(h - 2):
        for j in range(w):
            if random.randint(1, 10) % 3 == 0:
                new_img[i, j] = img[i - 1, j]
            elif random.randint(1, 10) % 2 == 0:
                new_img[i, j] = img[i + 1, j]
            else:
                new_img[i, j] = img[i + 2, j]
    return new_img


# 图像增强
def img_add():
    img = Image.open("oil.jpg")
    enh_col = ImageEnhance.Color(img)
    color = 2.0
    new_img = enh_col.enhance(color)
    new_img = cv2.cvtColor(np.asarray(new_img), cv2.COLOR_RGB2BGR)
    return new_img


if __name__ == "__main__":
    img = cv2.imread("49.jpg")
    oil_img = oil_effect(img)
    cv2.imwrite("oil.jpg", oil_img)
    cv2.imshow("0", img)
    cv2.imshow("1", img_add())
    cv2.waitKey()
    cv2.destroyAllWindows()

运行之后,效果如下:

OpenCV-Python实现油画效果的实例

水彩效果

像油画效果一样,水彩效果也可以用单行代码完成,但不包括导入和图像读取。

cv2.stylization()

import cv2

img = cv2.imread('img.jpg')

res = cv2.stylization(img, sigma_s=60, sigma_r=0.6)

# sigma_s controls the size of the neighborhood. Range 1 - 200

# sigma_r controls the how dissimilar colors within the neighborhood will be averaged. A larger sigma_r results in large regions of constant color. Range 0 - 1

OpenCV-Python实现油画效果的实例

到此这篇关于OpenCV-Python实现油画效果的实例的文章就介绍到这了,更多相关OpenCV 油画内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中wx将图标显示在右下角的脚本代码
Mar 08 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
python 中random模块的常用方法总结
Jul 08 Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 Python
python 中的divmod数字处理函数浅析
Oct 17 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
Django集成celery发送异步邮件实例
Dec 17 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
python 实现一个简单的线性回归案例
Dec 17 Python
OpenCV-Python实现图像平滑处理操作
OpenCV-Python模板匹配人眼的实例
健身房被搭讪?用python写了个小米计时器助人为乐
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
OpenCV-Python实现轮廓拟合
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Django drf请求模块源码解析
You might like
PHP与javascript对多项选择的处理
2006/10/09 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
Python深入学习之特殊方法与多范式
2014/08/31 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
Python快速从注释生成文档的方法
2016/12/26 Python
Python使用filetype精确判断文件类型
2017/07/02 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
环境工程专业个人求职信
2013/12/05 职场文书
送货司机岗位职责
2013/12/11 职场文书
出纳员岗位责任制
2014/02/11 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
六一儿童节活动总结
2014/08/27 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
师德师风整改措施
2014/10/24 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书