用python写一个ai识别行人的代码
时间: 2024-05-16 17:15:56 浏览: 80
要实现行人识别,可以使用深度学习框架中的物体检测模型。其中比较常用的是基于卷积神经网络(CNN)的目标检测模型,如YOLO、Faster R-CNN和SSD等。
下面是使用YOLOv3实现行人检测的Python代码:
首先,需要安装OpenCV和YOLOv3模型。
```
pip install opencv-python
```
下载YOLOv3的权重文件yolov3.weights和配置文件yolov3.cfg,并放在同一目录下。
然后,可以使用以下代码进行行人检测:
```python
import cv2
# 加载YOLOv3模型
net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg")
# 设置模型的输出层
layer_names = net.getLayerNames()
output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]
# 加载图像
image = cv2.imread("image.jpg")
# 对图像进行预处理
blob = cv2.dnn.blobFromImage(image, 1/255.0, (416, 416), swapRB=True, crop=False)
# 将blob输入模型进行推理
net.setInput(blob)
outs = net.forward(output_layers)
# 解析模型的输出,提取行人的边界框
class_ids = []
confidences = []
boxes = []
for out in outs:
for detection in out:
scores = detection[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if class_id == 0 and confidence > 0.5: # 只保留行人
center_x = int(detection[0] * image.shape[1])
center_y = int(detection[1] * image.shape[0])
width = int(detection[2] * image.shape[1])
height = int(detection[3] * image.shape[0])
left = int(center_x - width/2)
top = int(center_y - height/2)
class_ids.append(class_id)
confidences.append(float(confidence))
boxes.append([left, top, width, height])
# 非极大值抑制(NMS)去除重叠的边界框
indices = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)
for i in indices:
i = i[0]
box = boxes[i]
left, top, width, height = box
cv2.rectangle(image, (left, top), (left+width, top+height), (0, 255, 0), 2)
# 显示结果
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
注:上述代码中的image.jpg为需要进行行人识别的图像,可以替换为其他图像。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)