【openCV学习】19.卷积操作

1.卷积的API

例子:

#filter2D(img,ddepth,kernel,dst,anchor,delta,borderType)

#img:图片

#ddepth:卷积后图片的位深,即卷积之后图片的数据类型,一般设为-1,表示和原图类型一致

#kernal:卷积盒,用元组或者ndarray表示,里面的数据类型都为folat

#下面都缺省参数

#anchor:锚点,即卷积盒中心点,默认是(-1,-1)

#dalta:表示卷积之后额外增加的一个值bis,相当于线性方程中的偏差值,默认为0

#borderType:边界类型,一般不设

new_dog = cv2.filter2D(dog,-1,kernel)

一般在python中用numpy的ndarray数据类型来创建卷积核,如下所示:

注意卷积中的数字的数据类型至少是float32

#定义卷积盒  卷积盒必须是float32类型

#这样的一个卷积盒每一个空格都是1/25,进行卷积运算相当于把周围5*5区域内的像素取了个平均值

#可以想象到这个卷积盒的作用是使图片变得模糊

kernel = np.ones((5,5),np.float32)/25

#可以尝试其他的卷积盒,比如下面这个是提取轮廓的卷积盒:

kernel = np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])

#这是一个浮雕效果的卷积盒

kernel = np.array([[-2,1,0],[-1,1,1],[0,1,2]])

#锐化效果的卷积盒

kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]])

2.完整代码

import cv2
import numpy as np

dog = cv2.imread("image/dog.png")

#定义卷积盒  卷积盒必须是float32类型
#这样的一个卷积盒每一个空格都是1/25,进行卷积运算相当于把周围5*5区域内的像素取了个平均值
#可以想象到这个卷积盒的作用是使图片变得模糊
kernel = np.ones((5,5),np.float32)/25

#可以尝试其他的卷积盒,比如下面这个是提取轮廓的卷积盒:
kernel = np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])
#这是一个浮雕效果的卷积盒
kernel = np.array([[-2,1,0],[-1,1,1],[0,1,2]])
#锐化效果的卷积盒
kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]])

#filter2D(img,ddepth,kernel,dst,anchor,delta,borderType)
#img:图片
#ddepth:卷积后图片的位深,即卷积之后图片的数据类型,一般设为-1,表示和原图类型一致
#kernal:卷积盒,用元组或者ndarray表示,里面的数据类型都为folat
#下面都缺省参数
#anchor:锚点,即卷积盒中心点,默认是(-1,-1)
#dalta:表示卷积之后额外增加的一个值bis,相当于线性方程中的偏差值,默认为0
#borderType:边界类型,一般不设
new_dog = cv2.filter2D(dog,-1,kernel)

cv2.imshow("show",np.hstack((dog,new_dog)))
cv2.waitKey(0)
cv2.destroyAllWindows()

 

各种卷积核的运行效果如下图所示:

模糊:

提取轮廓:

浮雕:

锐化:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

owooooow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值