用pycharm代码实现使用函数cv2.Scharr()获取图像水平方向和垂直方向的边缘叠加的效果。
时间: 2024-10-11 20:03:45 浏览: 23
pycharm-community-2023.2.5
在PyCharm中,你可以使用OpenCV库(cv2)的`Scharr()`函数来检测图像的边缘,然后通过数学操作将水平方向和垂直方向的边缘合并起来创建叠加效果。以下是一个简单的例子:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg', 0) # 0表示灰度图像
# 对图像应用水平方向和垂直方向的Scharr算子
horizontal_edges = cv2.Scharr(img, cv2.CV_64F, 1, 0)
vertical_edges = cv2.Scharr(img, cv2.CV_64F, 0, 1)
# 将两个边应对齐并相加
combined_edges = horizontal_edges + vertical_edges
# 调整结果为uint8类型,并设置合适的阈值来可视化边缘
combined_edges = np.abs(combined_edges)
_, combined_edges = cv2.threshold(combined_edges, 127, 255, cv2.THRESH_BINARY)
# 显示原图和叠加后的边缘图像
cv2.imshow("Original Image", img)
cv2.imshow("Combined Edges", combined_edges)
# 等待用户按键,然后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码片段中,`cv2.Scharr()`函数用于计算高阶微分滤波,返回的是64位浮点数数组。之后我们将其转换为`uint8`以便于可视化。边缘叠加部分就是简单地将水平方向和垂直方向的结果相加。
阅读全文