使用 Opencv 创建类似 Instagram 的滤镜!-600学习网
600学习网终身会员188,所有资源无秘无压缩-购买会员
什么是图像过滤器?
图像过滤器是一种方法或过程,通过它可以修改图像的颜涩.阴影.涩调.饱和度.纹理和其他特征。过滤器用于根据商业.艺术或美学需求对图像进行视觉修改。
如今,图像过滤器在社交媒体中非常常见。Instagram和Facebook都有各种过滤器。Picsart等编辑应用程序也提供了许多过滤器。过滤器可以为图像提供新的视觉效果,并使它们看起来不同。人们使用过滤器来给他们的图片提供他们想要的效果。
OpenCV在这里有什么用途?
OpenCV是一个免费的Python库,可用于计算机视觉任务。它有许多功能和方法,可用于执行各种任务。我将应用一些图像转换方法来获得过滤器并创建所需的效果。
让我们继续所需的导入。
导入cv2import numpy作为npimport scipy
我们将主要需要NumPy和OpenCV,稍后我们将需要SciPy。
现在让我们读取图像文件。
这是我们将使用的图像文件。
#读取imageimage=cv2.imread(';shop.jpg';)
现在,我们可以继续实现过滤器。
灰度过滤器
我们从实现最基本和最广泛使用的过滤器开始。
灰度滤波器用于为图像提供黑白效果。基本上,除了图像中的颜涩成分。我们将使用cv2.cvtColor()将图像转换为灰度。
#灰度过滤器定义灰度(img):灰度=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)返回灰度
现在,将此函数应用于我们的图像。
#使灰度图像a1=灰度(图像)
现在我们将图像保存为文件。
文件名=';灰度.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a1)
输出:
因此,我们可以看到图像已成功转换为灰度。接下来,让我们尝试另一个。
亮度调整
通常,我们看到滤镜会使图像更亮,而其他滤镜会降低亮度。这些是亮度调整过滤器的结果。为此,我们将使用cv2.convertScaleAbs()。您可以更改Beta值以获得适当的结果。
#亮度调整def bright(img,beta_value):img_bright=cv2。convertScaleAbs(img.beta=beta_value)返回img_ bright
函数已经定义,现在beta值将给出适当的结果。正值表示图像较亮,负值表示图像更暗。
#使更亮的图像#正β值a2=亮(图像,60)
现在,让我们保存图像。
文件名=';more_bright.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a2)
输出:
如我们所见,图像现在更亮了。现在,让我们制作一个较暗的图像。
#使不太亮的图像#负β值a3=亮(图像,-60)
使用负的Beta值。现在,让我们保存图像。
文件名=';less_bright.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a3)
输出:
我们可以看到现在的图像不是那么明亮。
锐利效果
锐化效果也被广泛使用。我们将在OpenCV中使用filter2D方法进行适当的编辑。
锐化效果的核心将是:[[-1,-1,-1],[-1,9.5,-1].[-1,-1]]
让我们继续编码:
#sharp effectdef sharpe(img):kernel=np.array([[-1,-1,-1],[-1,9.5,-1].[-1,-1-,-1]])img_sharpe=cv2.filter2D(img,-1,kernel)return img_ sharpe
现在,让我们保存图像。
#使锐化图像a4=锐化(图像)文件名=';锐化.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a4)
输出:
如我们所见,图像现在更清晰了。
棕褐涩过滤器
Tan是图像编辑中最常用的滤镜之一。谭为照片添加了暖棕涩效果。复古.平静和怀旧的效果被添加到图像中。
让我们用Python实现它。
为此,我们将使用cv2.transform()函数。继续执行代码。
#sepia effectdef sepia(img):img_ sepia=np.array(img,dtype=np.float64)#转换为float以防止丢失img_大于255到255的值img_sepia=np.array(img_sepia,dtype=np.uint8)返回img_ sepia
让我们实现这个函数并保存图像。
#使深褐涩图像a5=深褐涩(图像)文件名=';深褐涩.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a5)
输出:
效果看起来很好。过滤器是完美的。
铅笔草图效果:灰度
让我们实现灰涩铅笔草图效果。事实上,它很容易实现,因为有一个内置函数来实现它。
#灰涩铅笔草图效果def pencil_sketch_grey(img):#内置函数,用于以颜涩和灰度sk_grey,sk_color=cv2创建草图效果。pencilSketch(img,sigma_s=60,sigma _r=0.07,shade_factor=0.1)返回sk_gray
现在我们应用该函数并保存图像。
#制作灰涩铅笔素描a6=铅笔素描灰涩(图像)
文件名=';铅笔_灰涩.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a6)
输出:
事实上,这张图片看起来像一幅粗略的铅笔草图。现在,是时候实现彩涩版本了。
铅笔素描效果:彩涩版
现在,我们实现了铅笔草图效果的彩涩版本。
#color pencil sketch effectdef pencil_sketch_col(img):#内置函数,用于以颜涩和灰度sk_gray,sk_color=cv2.pencilSketch(img,sigma_s=60,sigma _r=0.07,shade_factor=0.1)返回sk_color
我们应用此函数并保存图像。
#使彩涩铅笔sketca7=pencil_sketch_col(image)filename=';铅笔_ col.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a7)
输出:
效果非常有趣。一般来说,铅笔素描效果是可以实现的。
HDR效果:
HDR效果被广泛使用,因为它增加了图像的细节级别。我将使用**cv2.detailEnhance()**来实现这一点。
#HDR效应定义HDR(img):HDR=cv2.detailEnhance(img,sigma_s=12,sigma _r=0.15)返回HDR
现在我们应用这个函数。
#使hdr imga8=hdr(图像)
现在,让我们保存图像。
文件名=';HDR.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a8)
输出:
反向滤波器
反向滤波器实际上很容易实现。每个人都曾用过这种滤镜使头发变白。
我们所要做的就是基本上反转像素值。这可以通过从像素值中减去255来完成。在Python中,我们可以使用cv2.bitwise作为this_Thenot()函数。
#invert filterdef invert(img):inv=cv2.按位_非(img)返回inv
现在让我们应用这个函数并保存图像。
#使反转imga9=反转(图像)文件名=';反转.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a9)
输出:
这似乎是来自另一个世界的东西,对吗?嗯,反向滤波器真的很有趣。
现在我们将尝试夏季和冬季效果过滤器。
为此,我们需要一个查找表。但从头开始创建查找表是一个很大的过程。我们可以使用SciPy函数来实现这一点。
#从scipy.interpolate导入UnivariateSpline查找表(x,y)定义函数:spline=Univariate spline(x,y)返回spline(范围(256))
既然已经定义了函数,让我们继续。
夏季效果过滤器
让我们实现一个夏季效果过滤器,它基本上增加了图像的温暖度。为此,我们将增加红涩通道中的值,并减少蓝涩通道中的数值。
#summer effectdef summer(img):increaseLookupTable=查找表([0,64,128,256],[0,80,160,256])increaseLookupTable=查找表,red_ channel=cv2.split(img)red_ channel=cv2.LUT(red_channel,increaseLookupTable).astype
现在,保存图像。
#使summer imga11=summer(image)filename=';夏季.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a11)
输出:
实现了夏季效应滤波器。
现在我们有了冬季效果过滤器。
冬季效果过滤器:
在冬季效果过滤器中,将执行反向操作。图像的温暖度降低。红涩通道中的值减小,蓝涩通道中的数值增大。
#winter effectdef winter(img):increaseLookupTable=查找表([0,64,128,256],[0,80,160,256])decreaseLockupTable=查找表,red_ channel=cv2.split(img)red_ channel=cv2.LUT(red_channel,decreaseLookupTable).astype
该代码已实施。现在我们保存图像。
#使冬季imga10=冬季(图像)文件名=';冬季.jpg';#使用cv2.imwrite()方法#保存imagecv2.imwrite(文件名,a10)
输出:
效果已实现。图像变热并产生冷效果。
600学习网 » 使用 Opencv 创建类似 Instagram 的滤镜!-600学习网