PRTools4:Matlab模式识别工具箱介绍

版权申诉
0 下载量 142 浏览量 更新于2024-10-17 收藏 676KB RAR 举报
资源摘要信息:"PR-Tool-4.rar_pattern recognition" 知识点详细说明: 1. 工具箱概述: 标题中提到的“PR-Tool-4.rar”指的是“Pattern Recognition Toolbox version 4”的压缩包文件,通常用于数据挖掘和机器学习领域,特别用于模式识别任务。这里所提及的是PRTools4,即PRTools的第四个版本,它是一个在Matlab环境下运行的工具箱,专门设计用于帮助研究人员和工程师处理模式识别相关的问题。 2. PRTools的特性: - PRTools4基于Matlab开发,这意味着它继承了Matlab强大的数值计算能力和丰富的函数库。 - 工具箱提供了大量预处理、分类器训练、评估和可视化等功能,使得用户可以更加高效地构建和验证模式识别系统。 - 它支持广泛的模式识别算法,包括但不限于k近邻(k-NN)、支持向量机(SVM)、决策树、神经网络等。 - PRTools4适用于各种数据类型,包括图像、信号、文本等,这使得它在多个学科领域都有广泛的应用。 3. Matlab环境: - Matlab是数学计算、可视化以及编程的高性能语言,广泛应用于工程计算、控制设计、信号处理和通信等各个领域。 - Matlab提供了一个交互式环境,可以让用户快速地实现算法,并通过可视化工具直观地查看结果。 - PRTools作为Matlab的一个工具箱,其使用和操作遵循Matlab的基本规则和语法。 4. 文件内容解读: 文件名“PR Tool 4.pdf”表明该压缩包内包含的是关于PRTools4的文档或教程,文档通常会包含以下内容: - PRTools4的安装指南,包括系统要求和安装步骤。 - 详细的工具箱功能介绍,帮助用户理解各种函数和类库的使用方法。 - 实际案例和示例代码,辅助用户学习如何解决实际问题。 - 对模式识别领域的算法原理和技术进行解释,帮助用户构建理论基础。 - 对工具箱中的函数和方法进行详细说明,包括函数的输入输出格式、参数设置以及使用注意事项。 5. 应用场景: - PRTools4广泛应用于生物信息学、医学成像、遥感、语音识别、机器视觉、金融分析等多个领域。 - 它可以用于人脸检测、指纹识别、手写体识别、语音分类等多种实际问题的解决。 - 在科研领域,PRTools4常用于算法的开发和测试,为学者们提供一个方便的实验平台。 6. 结论: PRTools4是一个功能强大且用户友好的模式识别工具箱,它将模式识别算法与Matlab的便捷性结合在一起,极大地降低了研究和应用模式识别技术的门槛。通过使用PRTools4,用户可以在Matlab环境中高效地实现、测试和评估自己的模式识别系统,从而在科研和工业应用中取得实质性的进展。

import cv2 import face_recognition import numpy as np from PIL import Image, ImageDraw,ImageFont video_capture = cv2.VideoCapture(r'C:/Users/ALIENWARE/123.mp4')#如果输入是(0)为摄像头输入 #现输入为MP4进行识别检测人脸 first_image = face_recognition.load_image_file("1.jpg") first_face_encoding = face_recognition.face_encodings(first_image)[0] Second_image = face_recognition.load_image_file("2.jpg") Second_face_encoding = face_recognition.face_encodings(Second_image)[0] third_image = face_recognition.load_image_file("3.jpg") third_face_encoding = face_recognition.face_encodings(third_image)[0] inside_face_encodings = [first_face_encoding,Second_face_encoding,third_face_encoding] inside_face_names = ['A','B','C'] face_locations = [] face_encodings = [] face_names = [] process_this_frame = True while True: ret, frame = video_capture.read() small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25) rgb_small_frame = small_frame[:, :, ::-1] if process_this_frame: face_locations = face_recognition.face_locations(rgb_small_frame) face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations) face_names = [] for face_encoding in face_encodings: matches = face_recognition.compare_faces(inside_face_encodings, face_encoding) name = '未录入人脸' if True in matches: first_match_index = matches.index(True) name = inside_face_names[first_match_index] face_names.append(name) process_this_frame = not process_this_frame for (top, right, bottom, left), name in zip(face_locations, face_names): top *= 4 right *= 4 bottom *= 4 left *= 4 cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2) img_pil = Image.fromarray(frame) draw = ImageDraw.Draw(img_pil) fontStyle = ImageFont.truetype("C:/Windows/Fonts/simsun.ttc", 32, encoding="utf-8") draw.text((left + 6, bottom - 6), name, (0, 200, 0), font=fontStyle) frame = np.asarray(np.array(img_pil)) cv2.imshow('face_out', frame) if cv2.waitKey(1) & 0xFF == ord('q'): #退出需要按下Q键否则内核会崩溃 break video_capture.release() cv2.destroyAllWindows()

2023-06-07 上传
2023-06-07 上传

import face_recognition import cv2 import os unknow_people_list = [i for i in os.listdir('unknow_people') if (i.endswith('.jpg')) or (i.endswith('.png')) or (i.endswith('.jpeg'))] know_people_list = [i for i in os.listdir('know_people') if (i.endswith('.jpg')) or (i.endswith('.png')) or (i.endswith('.jpeg'))] def face_select(): for unknow_people in unknow_people_list: # 读取待识别图片 unknow = face_recognition.load_image_file('unknow_people/' + unknow_people) # 将待识别图片转化为特征向量 unknow_encode = face_recognition.face_encodings(unknow)[0] flag = False for know_people in know_people_list: # 读取计算机已经认识的图片 know = face_recognition.load_image_file('know_people/' + know_people) # 获得面部位置 face_location1 = face_recognition.face_locations(know) face_location2 = face_recognition.face_locations(unknow) # 提取面部关键点 face_landmarks_list1 = face_recognition.face_landmarks(know) face_landmarks_list2 = face_recognition.face_landmarks(unknow) # 图片转化为特征向量 know_encode = face_recognition.face_encodings(know)[0] # 两张图片进行比较的结果 res = face_recognition.compare_faces([know_encode], unknow_encode, tolerance=0.5) if res[0]: flag = True name = know_people.split(".")[0] break if flag: print(f'{name}匹配成功!') else: print(f'匹配失败') name = "UNKNOWN" # 绘制人脸特征点和矩形框 for (x1, y1, w1, h1) in face_location1: cv2.rectangle(know, (y1, x1), (h1, w1), (255, 0, 0), 2) cv2.putText(know, name, (y1 - 10, x1 - 10), cv2.FONT_HERSHEY_COMPLEX, 0.8, (0, 255, 0), 2) for face_landmarks in face_landmarks_list1: for facial_feature in face_landmarks.keys(): for pt_pos in face_landmarks[facial_feature]: cv2.circle(know, pt_pos, 1, (192, 192, 192), 2) for (x1, y1, w1, h1) in face_location2: cv2.rectangle(unknow, (y1, x1), (h1, w1), (255, 0, 0), 2) cv2.putText(unknow, name, (y1 - 10, x1 - 10), cv2.FONT_HERSHEY_COMPLEX, 0.8, (0, 255, 0), 2) for face_landmarks in face_landmarks_list2: for facial_feature in face_landmarks.keys(): for pt_pos in face_landmarks[facial_feature]: cv2.circle(unknow, pt_pos, 1, (192, 192, 192), 2) # 显示图片 cv2.imshow("known", know) cv2.imshow("unknown", unknow) cv2.waitKey(0) if __name__ == '__main__': face_select()

2023-06-02 上传