Opencv Mixin go templates notifications EaselJS bootstrap后台管理系统 android项目实战 jquery选择子元素 linux环境变量生效 增删改查sql语句 mysql设置自增初始值 查看mysql是否启动 mac版的matlab好用吗 python文件操作 java集合框架 java函数式接口 java的数据结构 java开发环境安装 嵌入式linux驱动程序设计从入门到精通 心理学与生活txt pushstate 一键换系统 电脑基础 苍灵世界 猫眼电影票 js验证码 cdr字体加粗 layout下载 数据结构与算法分析 cad乘号 autocad2004迷你版 苹果8怎么截屏 mysql游标 例程 js观察者模式 pip安装教程 外景拍照姿势 批处理 topaz滤镜
当前位置: 首页 > 学习教程  > python

OpenCV+Python图像梯度计算

2021/2/7 11:09:30 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

图像梯度-Sobel算子 读入图像: img cv2.imread(D:\\Desktop\\opencv\\circle.jpg,cv2.IMREAD_GRAYSCALE) cv2.imshow("img",img) cv2.waitKey() cv2.destroyAllWindows()dst cv2.Sobel(src, ddepth, dx, dy, ksize) ddepth:图像的深度dx和dy分别表示水…

图像梯度-Sobel算子

在这里插入图片描述
读入图像:

img = cv2.imread('D:\\Desktop\\opencv\\circle.jpg',cv2.IMREAD_GRAYSCALE)
cv2.imshow("img",img)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述
dst = cv2.Sobel(src, ddepth, dx, dy, ksize)

  • ddepth:图像的深度
  • dx和dy分别表示水平和竖直方向
  • ksize是Sobel算子的大小
#定义一个显示函数
def cv_show(img,name):
    cv2.imshow(name,img)
    cv2.waitKey()
    cv2.destroyAllWindows()

横向取轮廓:

sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)
cv_show(sobelx,'sobelx')

在这里插入图片描述
纵向取轮廓:

sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)
sobely = cv2.convertScaleAbs(sobely)  
cv_show(sobely,'sobely')

在这里插入图片描述
建议处理方式为分别计算x和y,再求和(轮廓较为清晰)

sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0)
cv_show(sobelxy,'sobelxy')

四周轮廓都较清晰
不建议直接计算(轮廓较为模糊)

sobelxy=cv2.Sobel(img,cv2.CV_64F,1,1,ksize=3)
sobelxy = cv2.convertScaleAbs(sobelxy) 
cv_show(sobelxy,'sobelxy')

在这里插入图片描述
示例2:

原图:

img = cv2.imread('D:\\Desktop\\opencv\\girl.jpg',cv2.IMREAD_GRAYSCALE)
cv_show(img,'img')

在这里插入图片描述
轮廓图:

img = cv2.imread('D:\\Desktop\\opencv\\girl.jpg',cv2.IMREAD_GRAYSCALE)
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)
sobely = cv2.convertScaleAbs(sobely)
sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0)
cv_show(sobelxy,'sobelxy')

在这里插入图片描述

图像梯度-Scharr算子

在这里插入图片描述

图像梯度-laplacian算子

在这里插入图片描述
不同算子的差异

#不同算子的差异
img = cv2.imread('D:\\Desktop\\opencv\\girl.jpg',cv2.IMREAD_GRAYSCALE)
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)   
sobely = cv2.convertScaleAbs(sobely)  
sobelxy =  cv2.addWeighted(sobelx,0.5,sobely,0.5,0)  

scharrx = cv2.Scharr(img,cv2.CV_64F,1,0)
scharry = cv2.Scharr(img,cv2.CV_64F,0,1)
scharrx = cv2.convertScaleAbs(scharrx)   
scharry = cv2.convertScaleAbs(scharry)  
scharrxy =  cv2.addWeighted(scharrx,0.5,scharry,0.5,0) 

laplacian = cv2.Laplacian(img,cv2.CV_64F)
laplacian = cv2.convertScaleAbs(laplacian)   

res = np.vstack((sobelxy,scharrxy,laplacian))
cv_show(res,'res')

效果展示:Soble算子、Scharr算子、laplacian算子在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_2000256.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?