使用Scharr算子,我们可以使用一阶导数在水平和垂直方向上计算图像梯度。梯度是针对灰度图像计算的。您可以使用方法cv2.scharr() 在图像上应用Scharr运算
语法
使用Scharr导数计算图像梯度的语法如下 –
cv2.Scharr(img, ddepth, xorder, yorder)
参数
- img − 原始输入图像。
-
ddepth − 输出图像的期望深度。它包含关于输出图像中存储的数据类型的信息。 我们使用 cv2.CV_64F 作为ddepth。它是一个64位浮点型Opencv。
-
xorder − 水平方向(X方向)上的导数次数。将xorder=1、yorder=0设置为X方向上的一阶导数。
-
Yorder − 垂直方向(Y方向)上的导数次数。将xorder=0、yorder=1设置为Y方向上的一阶导数。
步骤
您可以使用以下步骤使用Scharr导数查找图像梯度 –
导入所需库。在所有以下Python示例中,所需的Python库是 OpenCV 。确保您已经安装它。
import cv2
使用 cv2.imread() 读取输入图像作为灰度图像。
img = cv2.imread('lines.jpg',0)
使用 cv2.Scharr() 计算Sobel或Laplacian导数。 此导数是指图像梯度。
scharrx = cv2.Scharr(img,cv2.CV_64F,1,0)
使用 cv2.imshow() 方法显示图像梯度。
cv2.imshow("Scharr X", scharrx)
cv2.waitKey(0)
cv2.destroyAllWindows()
让我们查看更多示例以更清晰的理解。
示例1
在以下Python示例中,我们使用Scharr算子在X(水平)和Y(垂直)方向上计算图像梯度。
#导入所需库
import cv2
#使用灰度图像读取输入图像
img = cv2.imread('window.jpg',0)
#计算x方向上的一阶Sobel导数
scharrx = cv2.Scharr(img,cv2.CV_64F,1,0)
#计算y方向上的一阶Sobel导数
scharry = cv2.Scharr(img,cv2.CV_64F,0,1)
#显示scharrx和scharry
cv2.imshow("Scharr X", scharrx)
cv2.waitKey(0)
cv2.imshow("Scharr Y", scharry)
cv2.waitKey(0)
cv2.destroyAllWindows()
我们将使用以下图片 ” window.jpg ” 作为 输入文件 在上述程序中。
输出
当您执行上述程序时,它将生成以下 两个输出 窗口 - “Scharr X” 和 “Scharr Y”。
示例2
在下面的Python示例中,我们使用Scharr算子在X(水平)和Y(垂直)方向上计算图像梯度。
#导入所需的库
import cv2
#将输入图像读取为灰度图像
img = cv2.imread('tutorialspoint.png',0)
#计算x方向的1级Sobel导数
scharrx = cv2.Scharr(img,cv2.CV_64F,1,0)
#计算y方向的1级Sobel导数
scharry = cv2.Scharr(img,cv2.CV_64F,0,1)
#显示scharrx和scharry
cv2.imshow("Scharr X",scharrx)
cv2.waitKey(0)
cv2.imshow("Scharr Y",scharry)
cv2.waitKey(0)
cv2.destroyAllWindows()
我们将使用这张图片“ tutorialspoint.png ”作为上述程序中的 输入文件 。
输出
执行上述程序将产生以下两个输出窗口。
为帮助更多对人工智能感兴趣的小伙伴们能够有效的系统性的学习以及论文的研究,小编特意制作整理了一份人工智能学习资料给大家,整理了很久,非常全面。
大致内容包括一些人工智能基础入门视频和文档+AI常用框架实战视频、计算机视觉、机器学习、图像识别、NLP、OpenCV、YOLO、pytorch、深度学习与神经网络等学习资料、课件源码、国内外知名精华资源、以及AI热门论文等全套学习资料。
需要以上这些文中提到的资料,请点击此处→【人工智能全套完整VIP资料】即可免费获取。
看完三件事❤️
- 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
- 点赞,转发,有你们的『点赞和评论』,才是我创造的动力。
- 关注作者公众号 『 AI技术星球 』,不定期分享原创知识。
- 关注后回复【007】扫码即可获取学习资料包。
- 同时可以期待后续文章ing🚀。