计算机视觉之图像特效(实现浮雕效果等功能)(待更新。。。)

Posted shixinzei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机视觉之图像特效(实现浮雕效果等功能)(待更新。。。)相关的知识,希望对你有一定的参考价值。

1.浮雕效果

浮雕效果:newP = gray0-gray1+150(特定值) 即当前像素等于相邻像素之差再加上一个特定值突出灰度 即边缘特征,设定不同的特征值的时候会出现不同的浮雕效果。
测试代码如下:

 1 import cv2
 2 import numpy as np
 3 import random
 4 img = cv2.imread(image0.jpg, 1)
 5 imgInfo = img.shape
 6 height = imgInfo[0]
 7 width = imgInfo[1]
 8 cv2.imshow(src,img)
 9 # 转化为灰度图
10 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
11 dst = np.zeros((height,width,1),np.uint8)
12 for i in range(0,height):
13     for j in range(0,width-1):
14         grayP0 = int(gray[i,j])
15         grayP1 = int(gray[i,j+1])
16         newP = grayP0-grayP1+50
17         if newP > 255:
18             newP = 255
19         if newP < 0:
20             newP = 0
21         dst[i,j] = newP
22 cv2.imshow(dst,dst)
23 cv2.waitKey(0)

运行结果如下:

src初始图像:

技术图片

dst浮雕效果图像:(特定值为150的时候)

技术图片

dst浮雕效果图像:(特定值为50的时候)

技术图片

 2.颜色映射

颜色映射按照我的理解就是一个颜色对应上另一个颜色,比如蓝色对应红色,那么一副纯蓝色的图像就会被映射为一副纯红色的图像。

颜色映射的实现方法:可以建立一张颜色映射表,另外一种简单的方法是对rgb分别乘上一个系数,以下面实现一个“蓝色效果”为例,b=b*1.5 g=g*1.3 r=r,测试代码如下:

 1 import cv2
 2 import numpy as np
 3 import random
 4 img = cv2.imread(image0.jpg, 1)
 5 imgInfo = img.shape
 6 height = imgInfo[0]
 7 width = imgInfo[1]
 8 cv2.imshow(src,img)
 9 dst = np.zeros((height,width,3),np.uint8)
10 for i in range(0,height):
11     for j in range(0,width):
12         (b,g,r) = img[i,j]
13         b = b * 1.5
14         g = g * 1.3
15         # 防止越界操作
16         if b > 255:
17             b = 255
18         if g > 255:
19             g = 255
20         dst[i,j] = (b,g,r)
21 cv2.imshow(dst,dst)
22 cv2.waitKey(0)

运行结果如下:

src为初始图像:

技术图片

dst为蓝色效果图像:

技术图片

 3.油画特效

油画特效
1 gray
2 统计方块中的灰度值
3 对灰度值进行分段
4 对灰度值取平均作为结果

测试代码如下:

 1 import cv2
 2 import numpy as np
 3 import random
 4 img = cv2.imread(Jerry.jpg, 1)
 5 imgInfo = img.shape
 6 height = imgInfo[0]
 7 width = imgInfo[1]
 8 cv2.imshow(src,img)
 9 # 灰度化
10 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
11 dst = np.zeros((height,width,3),np.uint8)
12 for i in range(4,height-4):
13     for j in range(4,width-4):
14         array1 = np.zeros(8,np.uint8)
15         for m in range(-4,4):
16             for n in range(-4,4):
17                 p1 = int(gray[i+m,j+n]/32)
18                 array1[p1] = array1[p1]+1
19         currentMax = array1[0]
20         l = 0
21         for k in range(0,8):
22             if currentMax < array1[k]:
23                 currentMax = array1[k]
24                 l=k
25         for m in range(-4,4):
26             for n in range(-4,4):
27                 if gray[i+m,j+n] >= (l*32) and gray[i+m,j+n] <= ((l+1)*32):
28                     (b,g,r) = img[i+m,j+n]
29         dst[i,j] = (b,g,r)
30 cv2.imshow(Jerry,dst)
31 cv2.waitKey(0)

运行结果如下:

src为原始图像:

技术图片

Jerry是处理后的图像:

技术图片

 

以上是关于计算机视觉之图像特效(实现浮雕效果等功能)(待更新。。。)的主要内容,如果未能解决你的问题,请参考以下文章

计算机视觉系列教程2-6:八大图像特效算法制作你的专属滤镜(附Python代码)

快速学完OpenCV+python计算机视觉图像处理

跟我学Python图像处理丨图像特效处理:毛玻璃浮雕和油漆特效

Python 计算机视觉(十五)—— 图像特效处理

Python 计算机视觉(补充版)—— 图像特效中的油画效果

android图像处理浮雕效果