资源简介
#图像梯度
(注意都需要cv.convertScaleAbs将得到的有些负值取绝对值得到正数,并将数据转化到0-255之间,且sobel与Scarr算法中的数据位数都是32位浮点型的)
import cv2 as cv
import numpy as np
def sobel_demo(image):
#注意是32位float数据
grad_x = cv.Scharr(image, cv.CV_32F, 1, 0)
grad_y = cv.Scharr(image, cv.CV_32F, 0, 1)
#当用sobel算子不能很好的得到边缘的时候,就可以用Scharr算子,这是加强版的sobel算子,就可以得到
#原图像不是很明显的边缘了
# grad_x =cv.Sobel(image,cv.CV_32F,1,0)
# grad_y =cv.Sobel(image,cv.CV_32F,0,1)
gradx =cv.convertScaleAbs(grad_x)
grady = cv.convertScaleAbs(grad_y)
#cv.imshow("gradx",gradx)
#cv.imshow("grady",grady)
dst = cv.addWeighted(gradx,0.5,grady,0.5,0)
cv.imshow("sobel_demo",dst)
def lapalace_demo(image):
#dst =cv.Laplacian(image,cv.CV_32F)
#dst =cv.convertScaleAbs(dst) 会把dst变成单通道的8位的0-255的图像
#也可以用filter2D来做拉普拉斯算子
kernel = np.array([[0,-1,0],[-1,4,-1],[0,-1,0]])
dst = cv.filter2D(image,cv.CV_32F,kernel)
dst = cv.convertScaleAbs(dst)
cv.imshow("lapalace",dst)
src = cv.imread("E:/opencv/picture/step.jpg")
cv.imshow("inital_window",src)
#sobel_demo(src)
lapalace_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
分析:
图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导。
一、 Sobel算子是普通一阶差分,是基于寻找梯度强度。拉普拉斯算子(二阶差分)是基于过零点检测。通过计算梯度,设置阀值,得到边缘图像。
def sobel_demo(image):
#注意是32位float数据
grad_x = cv.Scharr(image, cv.CV_32F, 1, 0)
grad_y = cv.Scharr(image, cv.CV_32F, 0, 1)
#当用sobel算子不能很好的得到边缘的时候,就可以用Scharr算子,这是加强版的sobel算子,就可以得到
#原图像不是很明显的边缘了
# grad_x =cv.Sobel(image,cv.CV_32F,1,0)
# grad_y =cv.Sobel(image,cv.CV_32F,0,1)
gradx = cv.convertScaleAbs(grad_x)
grady = cv.convertScaleAbs(grad_y)
#cv.imshow("gradx",gradx)
#cv.imshow("grady",grady)
dst = cv.addWeighted(gradx,0.5,grady,0.5,0)
cv.imshow("sobel_demo",dst)
1.Sobel算子用来计算图像灰度函数的近似梯度。Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为常用的边缘检测方法。
2.Sobel具有平滑和微分的功效。即:Sobel算子先将图像横向或纵向平滑,然后再纵向或横向差分,得到的结果是平滑后的差分结果。
Ope
(注意都需要cv.convertScaleAbs将得到的有些负值取绝对值得到正数,并将数据转化到0-255之间,且sobel与Scarr算法中的数据位数都是32位浮点型的)
import cv2 as cv
import numpy as np
def sobel_demo(image):
#注意是32位float数据
grad_x = cv.Scharr(image, cv.CV_32F, 1, 0)
grad_y = cv.Scharr(image, cv.CV_32F, 0, 1)
#当用sobel算子不能很好的得到边缘的时候,就可以用Scharr算子,这是加强版的sobel算子,就可以得到
#原图像不是很明显的边缘了
# grad_x =cv.Sobel(image,cv.CV_32F,1,0)
# grad_y =cv.Sobel(image,cv.CV_32F,0,1)
gradx =cv.convertScaleAbs(grad_x)
grady = cv.convertScaleAbs(grad_y)
#cv.imshow("gradx",gradx)
#cv.imshow("grady",grady)
dst = cv.addWeighted(gradx,0.5,grady,0.5,0)
cv.imshow("sobel_demo",dst)
def lapalace_demo(image):
#dst =cv.Laplacian(image,cv.CV_32F)
#dst =cv.convertScaleAbs(dst) 会把dst变成单通道的8位的0-255的图像
#也可以用filter2D来做拉普拉斯算子
kernel = np.array([[0,-1,0],[-1,4,-1],[0,-1,0]])
dst = cv.filter2D(image,cv.CV_32F,kernel)
dst = cv.convertScaleAbs(dst)
cv.imshow("lapalace",dst)
src = cv.imread("E:/opencv/picture/step.jpg")
cv.imshow("inital_window",src)
#sobel_demo(src)
lapalace_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
分析:
图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导。
一、 Sobel算子是普通一阶差分,是基于寻找梯度强度。拉普拉斯算子(二阶差分)是基于过零点检测。通过计算梯度,设置阀值,得到边缘图像。
def sobel_demo(image):
#注意是32位float数据
grad_x = cv.Scharr(image, cv.CV_32F, 1, 0)
grad_y = cv.Scharr(image, cv.CV_32F, 0, 1)
#当用sobel算子不能很好的得到边缘的时候,就可以用Scharr算子,这是加强版的sobel算子,就可以得到
#原图像不是很明显的边缘了
# grad_x =cv.Sobel(image,cv.CV_32F,1,0)
# grad_y =cv.Sobel(image,cv.CV_32F,0,1)
gradx = cv.convertScaleAbs(grad_x)
grady = cv.convertScaleAbs(grad_y)
#cv.imshow("gradx",gradx)
#cv.imshow("grady",grady)
dst = cv.addWeighted(gradx,0.5,grady,0.5,0)
cv.imshow("sobel_demo",dst)
1.Sobel算子用来计算图像灰度函数的近似梯度。Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为常用的边缘检测方法。
2.Sobel具有平滑和微分的功效。即:Sobel算子先将图像横向或纵向平滑,然后再纵向或横向差分,得到的结果是平滑后的差分结果。
Ope
代码片段和文件信息
- 上一篇:SeismoSignal使用方法
- 下一篇:PSIM仿真LLC电路模型
相关资源
- 基于背景累积的运动目标检测
- 树莓派安装ffmpeg及opencv资料
- 基于OpenCV的云台控制系统
- 基于opencv的blob分析代码
- GrabCut算法详解
- opencv中图片添加文字
- 自动聚焦源程序(基于openCV)
- QT+OpenCV+USB摄像头
- SIFT算法实现及代码详解
- opencv使用圆靶标标定相机参数
- OpenCV轮廓匹配
- OpenCVForUnity,Unity插件
- opencv 320 编译需要 vgg_generated 包
- qt+openc循线四旋翼
- Camshift 全自动跟踪算法/opencv
- OPENCV函数手册(带目录)pdf
- OpenCV3.3
- opencv实现两种手势识别
- OpenCV+SVM简单应用-------路面箭头分类
- 基于Qt与OpenCV的图片读取、保存,并利
- Cannot load info library for OpenCV解决方案文
- Xvid-1.1.3-27042008
- 使用VIBE算法进行车流量检测并消除鬼
- opencv库文件
- opencv中的cvaux.lib文件
-
opencv的各种haarcascade.xm
l文件 - opencv实现的SIFT特征提取与匹配算法
- 《学习opecnv》第十二章鸟瞰图变换可
- 批量图像自动分割 opencv grabcut
- Opencv实现特征点提取和匹配
评论
共有 条评论