• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

OpenCV半小时掌握基本操作之图像梯度

python 搞代码 4年前 (2022-01-08) 31次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了OpenCV基本操作之图像梯度,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

【OpenCV】⚠️高手勿入! 半小时学会基本操作⚠️图像梯度

概述

OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界.

梯度运算

梯度: 膨胀 (Dilating) – 腐蚀 (Eroding).

例子:

 # 读取图片 pie = cv2.imread("pie.jpg-600") # 核 kernel = np.ones((7, 7), np.uint8) # 计算梯度 gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel=kernel) # 图片展示 cv2.imshow("gradient", gradient) cv2.waitKey(0) cv2.destroyAllWindows() 

输出结果:

礼帽

礼帽 (Top Hat): 原始输入 – 开运算结果.

例子:

 # 读取图片 img = cv2.imread("white.jpg-600") # 核 kernel = np.ones((7, 7), np.uint8) # 礼帽 tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel=kernel) # 图片展示 cv2.imshow("tophat", tophat) cv2.waitKey(0) cv2.destroyAllWindows() 

输出结果:

黑帽

黑帽 (Black Hat): 闭运算 – 原始输入.

例子:

 # 读取图片 img = cv2.imread("white.jpg-600") # 核 kernel = np.ones((7, 7), np.uint8) # 礼帽 blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel=kernel) # 图片展示 cv2.imshow("blackhat", blackhat) cv2.waitKey(0) cv2.destroyAllWindows() 

输出结果:

Sobel 算子

Sobel 算子 (Sobeloperator) 是边缘检测中非常重要的一个算子. Sobel 算子是一类离散性差分算子, 用来运算图像高亮度函数的灰度之近似值.

格式:

 cv2.Sobel(src, ddepth, dx, dy, ksize) 

参数:

src: 原图

ddepth: 图片深度

dx: 水平方向

dy: 竖直方向

ksize: 算子大小

计算 x

代码:

 # 读取图片 img = cv2.imread("pie.jpg-600") # Sobel算子 sobelx = cv2.Sobel(img, -1, 1, 0, ksize=3) # 展示图片 cv2.imshow("sobelx", sobelx) cv2.waitKey(0) cv2.destroyAllWindows() 

输出结果:

计算 y

代码:

 # 读取图片 img = cv2.imread("pie.jpg-600") # Sobel算子 sobely = cv2.Sobel(img, -1, 0, 1, ksize=3) # 展示图片 cv2.imshow("sobely", sobely) cv2.waitKey(0) cv2.destroyAllWindows() 

输出结果:

计算 x+y

代码:

 # 读取图片 img = cv2.imre<a style="color:transparent">来源gao*daima.com搞@代#码网</a>ad("pie.jpg-600") # Sobel算子 sobel = cv2.Sobel(img, -1, 1, 1, ksize=3) # 展示图片 cv2.imshow("sobel", sobel) cv2.waitKey(0) cv2.destroyAllWindows() 

输出结果:

融合

代码:

 # Sobel算子 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) # 融合 sobel_xy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0) # 展示图片 cv2.imshow("sobel_xy", sobel_xy) cv2.waitKey(0) cv2.destroyAllWindows() 

输出结果:

注: 当 ddepth 设置为 -1, 即与原图保持一致, 得到的结果可能是错误的. 计算梯度值可能出现负数, 负数会自动截断为 0. 为了避免信息丢失, 我们需要使用更高是数据类型 cv2.CV_64F, 再通过取绝对值将其映射到 cv2.CV_8U 类型.

以上就是OpenCV半小时掌握基本操作之图像梯度的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:OpenCV半小时掌握基本操作之图像梯度

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址