用Python对图片进行霍夫变换
时间: 2024-06-09 09:01:12 浏览: 14
霍夫变换是一种常用于图像处理的技术,可以用于检测直线、圆等形状。下面介绍如何使用Python进行霍夫变换。
1. 导入必要的库
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
```
2. 读取图片并转为灰度图
```python
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
```
3. 对灰度图进行边缘检测
```python
edges = cv2.Canny(gray,50,150,apertureSize = 3)
```
4. 进行霍夫变换
```python
lines = cv2.HoughLines(edges,1,np.pi/180,200)
```
其中,第一个参数是边缘检测后的图像,第二个参数是距离r的精度,第三个参数是角度θ的精度,第四个参数是阈值,表示检测到的直线上的点数要大于阈值才能被认为是一条直线。
5. 绘制检测到的直线
```python
for line in lines:
rho,theta = line[0]
a = np.cos(theta)
b = np.sin(theta)
x0 = a*rho
y0 = b*rho
x1 = int(x0 + 1000*(-b))
y1 = int(y0 + 1000*(a))
x2 = int(x0 - 1000*(-b))
y2 = int(y0 - 1000*(a))
cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)
```
其中,rho和theta分别表示检测到的直线的距离和角度,a和b是rho和theta的余弦和正弦值,x0和y0是直线在极坐标系下的坐标,x1、y1和x2、y2是直线在直角坐标系下的坐标,最后使用cv2.line函数绘制直线。
6. 显示结果
```python
plt.imshow(img)
plt.show()
```
完整代码如下:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
lines = cv2.HoughLines(edges,1,np.pi/180,200)
for line in lines:
rho,theta = line[0]
a = np.cos(theta)
b = np.sin(theta)
x0 = a*rho
y0 = b*rho
x1 = int(x0 + 1000*(-b))
y1 = int(y0 + 1000*(a))
x2 = int(x0 - 1000*(-b))
y2 = int(y0 - 1000*(a))
cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)
plt.imshow(img)
plt.show()
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)