使用标准霍夫直线检测图片中的物体并裁剪出来python代码
时间: 2024-02-23 19:57:06 浏览: 96
图片裁剪python代码
好的,以下是使用标准霍夫直线检测来检测图片中的物体并将其裁剪出来的Python代码:
```python
import cv2
# 读取图片
img = cv2.imread('test.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 高斯滤波
gray = cv2.GaussianBlur(gray, (3, 3), 0)
# Canny边缘检测
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
# 霍夫直线检测
lines = cv2.HoughLines(edges, 1, cv2.cv2.PI / 180, 100)
# 筛选直线
for line in lines:
rho, theta = line[0]
if abs(theta - 90 * cv2.cv2.PI / 180) < 0.1: # 只选取竖直方向的直线
a = cv2.cv2.cos(theta)
b = cv2.cv2.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)
# 计算物体的边界框
x_min = min(x1, x2)
x_max = max(x1, x2)
y_min = min(y1, y2)
y_max = max(y1, y2)
# 裁剪出物体的区域
object_region = img[y_min:y_max, x_min:x_max]
cv2.imshow("Object", object_region)
cv2.waitKey(0)
```
需要注意的是,这只是一个简单的示例代码,实际应用中可能需要进行更多的处理和优化。
阅读全文