opencvpathon视觉避障代码
时间: 2023-07-02 13:20:01 浏览: 72
以下是一个基于OpenCV和Python的简单视觉避障代码示例:
```python
import cv2
import numpy as np
# 初始化摄像头
cap = cv2.VideoCapture(0)
# 设置ROI区域(感兴趣区域)
roi_w = 200
roi_h = 200
roi_x = int((cap.get(3) / 2) - (roi_w / 2))
roi_y = int((cap.get(4) / 2) - (roi_h / 2))
# 设置阈值
threshold = 50
while True:
# 读取摄像头图像
ret, frame = cap.read()
# 提取ROI区域
roi = frame[roi_y:roi_y+roi_h, roi_x:roi_x+roi_w]
# 转换为灰度图像
gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
# 应用高斯滤波
blur = cv2.GaussianBlur(gray, (5,5), 0)
# 二值化处理
ret, thresh = cv2.threshold(blur, threshold, 255, cv2.THRESH_BINARY_INV)
# 找到轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(roi, contours, -1, (0,255,0), 3)
# 判断是否需要转向
if len(contours) > 0:
# 获取最大轮廓
max_contour = max(contours, key=cv2.contourArea)
# 获取最大轮廓的中心点坐标
M = cv2.moments(max_contour)
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
# 绘制中心点
cv2.circle(roi, (cx, cy), 5, (0,0,255), -1)
# 判断转向
if cx < roi_w / 2:
print("Turn left")
else:
print("Turn right")
# 显示处理后的图像
cv2.imshow('frame', frame)
# 按下q键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头并关闭所有窗口
cap.release()
cv2.destroyAllWindows()
```
这个代码使用了一个ROI区域来提取感兴趣的图像区域,并通过阈值处理和轮廓检测来识别障碍物。如果障碍物在左侧,程序会打印“Turn left”并提示向左转向;如果障碍物在右侧,程序会打印“Turn right”并提示向右转向。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)