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

Posted 昊虹图像算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于OpenCV实现的图像油画效果代码(高效率低耗时的C++代码-带详细注释)相关的知识,希望对你有一定的参考价值。

油画的特点是其颜色值很有限,并且笔比较粗,所以我们要实现油画效果关键就是利用运算实现这两点。

本文实现的图像油画效果代码原理如下:

一、将原图进行灰度化处理后将灰度值线性压缩到0~level,得到图像①;

二、用一个窗去遍历中图像①中的每一个像素,统计出窗覆盖区域出现次数最多的灰度等级,并记录下具体出现的次数,并记为most_times,同时把原图中的BGR三通道像素值分别累加,用BGR三通道累加和除以most_times,得到一个平均BGR值,用这个平均BGR值作为目标图像中对应像素的值。

三、重复上面的过程直到遍历完毕图像①,就得到了油画效果的图像。

从上面的原理叙述来看,原理不难,但问题就在于如何高效的实现?这里面循环比较多,计算量也比较大,如果不作优化,那么程序会耗时不少。比如博文https://blog.csdn.net/nominior/article/details/82954961提供的代码就因耗时太多而基本无法用。

结合算法原理中累加的特点,对窗作蛇形移动,蛇形移动的过程如下:

每次蛇形移动时把新增的列值加入上次统计结果,同时把尾巴一列的值减去,这样就可以将算法复杂度由O(n^2) 降低到 O(2n),使得代码运行的时间大大降低。

按以上思路进行优化后,用300×300的图片进行测试…测试结果如下:

由于代码是自己花时间来精力慢慢写出来的,所以需要的朋友麻烦花费1.9元付费下载,代码中我写了详细的注释,大家一看便懂。
下载链接:https://download.csdn.net/download/wenhao_ir/85704781
对于这个代码,购买之后阅读和使用过程中有任何疑问,都可以私信我。

以上是关于基于OpenCV实现的图像油画效果代码(高效率低耗时的C++代码-带详细注释)的主要内容,如果未能解决你的问题,请参考以下文章

基于OpenCV实现图像的月光效果

Atitit 图像处理之仿油画效果 Oilpaint油画滤镜 水彩画 漫画滤镜 v2

OpenCV和MFC的超混沌图像加密

OpenCV实战——实现高效图像扫描循环

Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示

Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示