日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

基于ROS的人脸识别

發布時間:2025/3/21 pytorch 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于ROS的人脸识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#!/usr/bin/env python # -*- coding: utf-8 -*- import rospy import cv2 import numpy as np from sensor_msgs.msg import Image import cv_bridgeclass FaceDetector:def __init__(self):rospy.on_shutdown(self.cleanup)# 創建cv_bridgeself.bridge = cv_bridge.CvBridge()self.image_pub = rospy.Publisher("cv_bridge_image", Image, queue_size=1)self.image_sub = rospy.Subscriber("/usb_cam/image_raw", Image, self.image_callback, queue_size=1)# self.image_sub = rospy.Subscriber("/camera/rgb/image_raw", Image, self.image_callback, queue_size=1)# 獲取haar特征的級聯表的XML文件,文件路徑在launch文件中傳入cascade_1 = rospy.get_param("~cascade_1", "~/catkin_ws/src/opencv/data/haar_detectors/haarcascade_frontalface_alt.xml")cascade_2 = rospy.get_param("~cascade_2", "~/catkin_ws/src/opencv/data/haar_detectors/haarcascade_profileface.xml")# 使用級聯表初始化haar特征檢測器self.cascade_1 = cv2.CascadeClassifier(cascade_1)self.cascade_2 = cv2.CascadeClassifier(cascade_2)# 設置級聯表的參數,優化人臉識別,可以在launch文件中重新配置self.haar_scaleFactor = rospy.get_param("~haar_scaleFactor", 1.2)self.haar_minNeighbors = rospy.get_param("~haar_minNeighbors", 2)self.haar_minSize = rospy.get_param("~haar_minSize", 40)self.haar_maxSize = rospy.get_param("~haar_maxSize", 60)self.color = (50, 255, 50)def image_callback(self, data):# 使用cv_bridge將ROS的圖像數據轉換成OpenCV的圖像格式cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8")frame = np.array(cv_image, dtype=np.uint8)# 創建灰度圖像grey_image = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 創建平衡直方圖,減少光線影響grey_image = cv2.equalizeHist(grey_image)# 嘗試檢測人臉faces_result = self.detect_face(grey_image)# 在opencv的窗口中框出所有人臉區域if len(faces_result) > 0:for face in faces_result:x, y, w, h = facecv2.rectangle(cv_image, (x, y), (x + w, y + h), self.color, 2)# 將識別后的圖像轉換成ROS消息并發布self.image_pub.publish(self.bridge.cv2_to_imgmsg(cv_image, "bgr8"))def detect_face(self, input_image):# 首先匹配正面人臉的模型if self.cascade_1:faces = self.cascade_1.detectMultiScale(input_image,self.haar_scaleFactor,self.haar_minNeighbors,cv2.CASCADE_SCALE_IMAGE,(self.haar_minSize, self.haar_maxSize))# 如果正面人臉匹配失敗,那么就嘗試匹配側面人臉的模型if len(faces) == 0 and self.cascade_2:faces = self.cascade_2.detectMultiScale(input_image,self.haar_scaleFactor,self.haar_minNeighbors,cv2.CASCADE_SCALE_IMAGE,(self.haar_minSize, self.haar_maxSize))return facesdef cleanup(self):print("強制結束程序。。")cv2.destroyAllWindows()if __name__ == '__main__':try:# 初始化ros節點rospy.init_node("face_detector")follower = FaceDetector()rospy.loginfo("人臉識別已經啟動。。。")rospy.loginfo("請打開opencv節點訂閱消息。。。")rospy.spin()except KeyboardInterrupt:print("強制結束程序。。")cv2.destroyAllWindows()

?

轉載于:https://www.cnblogs.com/dingyc/p/10677171.html

總結

以上是生活随笔為你收集整理的基于ROS的人脸识别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。