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

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是处理后的图像:

原文地址:https://www.cnblogs.com/shixinzei/p/10899102.html

时间: 2024-10-29 22:13:42

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

计算机视觉之图像特效(实现图像灰度处理等功能)(待更新。。。)

1.图像灰度处理 下面介绍四种图像灰度处理的方法: 方法1:cv2中的imread(参数:0表示为灰度图片,1表示为彩色图片) 测试代码如下: 1 import cv2 2 # 方法1 imread 3 img0 = cv2.imread('image0.jpg', 0) # 0 为灰度图片 1 为彩色图片 4 img1 = cv2.imread('image0.jpg', 1) 5 print(img0.shape) 6 print(img1.shape) 7 cv2.imshow('src0

Android 中的图像特效(Matrix)

以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,现在在Android中有一个Matrix类,它的中文意思就是矩阵.Matrix主要是用于图像的缩放.平移.旋转.扭曲等操作.图像处理,主要用到的是乘法. 下面是一个乘法的公式: 在Android里面,Matrix由9个float值构成,是一个3*3的矩阵.如下图 其含义如下: sinX和cosX,表示旋转角度的cos值和sin值(旋转角度是按顺时针方向计算的).translateX和translateY表示x和y的平移量.scale是缩放的

【转】四、android图像特效处理之底片效果

这篇将讲到图片特效处理的底片效果.跟前面一样是对像素点进行处理,算法是通用的. 算法原理:将当前像素点的RGB值分别与255之差后的值作为当前点的RGB值. 例: ABC 求B点的底片效果: B.r = 255 - B.r; B.g = 255 - B.g; B.b = 255 - B.b; 效果图: 原图: 代码: package com.color; import android.content.Context; import android.graphics.Bitmap; import

javascript特效源码(2、图像特效)

1.不停闪烁的图像 不停闪烁的图片[修改显示的图片及链接地址后根据说明进行共1步] 1.以下代码放在一个新建页面的HTML的<body></body> 区即可:[页面上必须什么都没有] <HTML> <HEAD> <TITLE>Blink image</TITLE> </HEAD> <BODY ONLOAD="soccerOnload()" topmargin="0">

iOS 程序插件及功能动态更新思路

所用框架及语言 iOS客户端-Wax(开发愤怒的小鸟的连接Lua 和 Objc的框架),Lua,Objc, 服务端-Java(用于返回插件页面) 工具框架链接地址:Wax - https://github.com/probablycorey/wax  Netty - https://netty.io/  用做Http服务器,返回页面 由于Lua脚本语言,不需要编译即可运行,这点是我的这个思路可以执行的大前提,再加上苹果允许像Lua这样的脚本的存在,这一思路才能得以实现.个人感觉这一思路有点类似于

PS 图像特效-非线性滤波器

利用非线性滤波器,使图像的色彩凝块,形成一种近似融化的特效. clc; clear all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); Image=imread('4.jpg'); Image=double(Image); size_info=size(Image); height=size_info(1); width=size_info(2); N=3; Image_out=Image; for i=1+

OpenCV 图像特效

1.RGB ->灰度 #灰度 方式1 img=cv2.imread('b.png',0) img1=cv2.imread('b.png',1) height=img1.shape[0] width=img1.shape[1] print(img1.shape) # cv2.imshow('rgb',img1) # cv2.imshow('gray',img) # cv2.waitKey(0) #灰度 方式2 # dst=cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)#

libvlc —— 播放器示例程序[C++代码实现攫取 RGB图像 和 PCM音频 数据功能]

在我以前的实际项目中,曾利用 libvlc 去解码音视频媒体数据(如 RTSP.本地文件 等),通过其提供的回调函数接口,攫取 RGB图像 进行图像分析,如 人脸识别.运动检测 等一类的产品应用.除此之外,只要提供适当的 MRL,配合选项参数,VLC 还可以进行屏幕录制.摄像头图像采集.麦克风音频采集 等功能. 我在网上参看过很多人提供的示例源码,实现流程都很初潜,只适合当作学习的 Demo 来看,与实际的项目应用还有很多问题要解决.为此,在这里公开我封装 libvlc 的 C++ 类,方便TA

4-14 图像特效小结

灰度图片和彩色图片,它们的颜色维度是不一样的.彩色图片每一个颜色是三维的,分别是RGB三种颜色来组成. 通过opencv API的方法来把彩色图片转化为灰度图片. 灰度图片实现的算法原理:通过RGB取均值的方式将彩色图片转化为灰度图片.还介绍了一个比较著名的心理学公式:gray = r*0.299+g*0.587+b*0.114 除了介绍API的使用以及彩色图片灰度化的算法原理之外,我们还给大家着重强调了算法的优化.对于图像处理来说,算法优化是非常重要的.比如说浮点转定点,以及加减乘除运算尽可能