python怎么将表情识别系统的最后的识别结果截取数据并存入数据库

python怎么将表情识别系统的最后的识别结果截取数据并存入数据库 是将定义的字符串截取出来吗?

是的,你可以通过字符串的截取功能,将表情识别系统的最后的识别结果截取出来并且存入数据库中。下面是一个简单的示例:

假设你的最后的识别结果为一个字符串,例如:result = "这是一张开心的表情"

首先,你需要将结果字符串中的表情部分截取出来,可以使用正则表达式,示例如下:

import re

emoji_pattern = re.compile("["
    u"\U0001F600-\U0001F64F"  # emoticons
    u"\U0001F300-\U0001F5FF"  # symbols&pics
    u"\U0001F680-\U0001F6FF"  # transport&map
    u"\U0001F1E0-\U0001F1FF"  # flags (iOS)
                       "]+", flags=re.UNICODE)

emojis = emoji_pattern.findall(result)

这段代码使用了正则表达式,找出了结果字符串中的表情部分,并将其存入一个列表emojis中。

接下来,你可以将emojis列表中的表情部分作为一条记录存入数据库中。比如使用Python自带的SQLite数据库,示例如下:

import sqlite3

# 连接数据库,如果不存在,则会创建一个新的数据库
conn = sqlite3.connect('my_database.db')
# 创建一个游标对象
cursor = conn.cursor()

# 创建一张表存储表情记录
cursor.execute('create table emojis(id integer primary key, emoji text)')

# 遍历emojis列表,并将每个表情存入表中
for i, e in enumerate(emojis):
    cursor.execute('insert into emojis(id, emoji) values(?, ?)', (i, e))

# 提交更改,关闭游标和数据库连接
conn.commit()
cursor.close()
conn.close()

这段代码使用了sqlite3模块,连接到了一个名为my_database.db的数据库,并在其中创建了一个名为emojis的表,用于存储表情记录。然后,通过遍历emojis列表,将其中的每个表情存入表中。

当然,以上代码示例仅供参考,具体的实现代码需要根据你的需求进行相应的修改和调整。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/1072237
  • 这篇博客你也可以参考下:python读取数据库的文件出现编码问题的解决办法
  • 除此之外, 这篇博客: [易懂]两连杆关节机械臂机器人给定位置求解各关节转动角度教程模拟Python实现中的 鼠标选定屏幕上一点,然后求逆解进行运动Python实现代码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 下面是效果图,打开你的编辑器跟着我写的代码实践吧,你的赞和关注是我持续分享的动力
    在这里插入图片描述

    """
    @author 李韬——知乎@Ai酱
    教程地址:https://blog.csdn.net/varyshare/article/details/96885179
    """
    import numpy as np
    from numpy import cos, sin, arccos, arctan2, sqrt
    import matplotlib.pyplot as plt
    
    (target_x,target_y) = (1,1) # 机器人要到达的目标点
    class TwoLinkArm:
        """
        两连杆手臂模拟。
        所使用的变量与模拟实体对应关系如下所示:
        (joint0)——连杆0——(joint1)——连杆1——[joint2]
        注意:joint0是基座也是坐标原点(0,0)
        """
    
        def __init__(self, _joint_angles=[0, 0]):
            # 第0个关节是基座所以坐标固定是原点(0,0)
            self.joint0 = np.array([0, 0])
            # 机器人两段连杆(手臂)的长度
            self.link_lengths = [1, 1]
            self.update_joints(_joint_angles)
    
        def update_joints(self, _joint_angles):
            self.joint_angles = _joint_angles
            self.forward_kinematics()
    
        def forward_kinematics(self):
            """
            根据各个关节角计算各个关节的位置.
            注意:所使用的变量与模拟实体对应关系如下所示:
            (joint0)——连杆0——(joint1)——连杆1——[joint2]
            """
    
            # 计算关节1的位置
            # q0,q1分别是第0和第1个关节的关节角
            q0 = self.joint_angles[0]
            a0 = self.link_lengths[0]
            self.joint1 = self.joint0 + [a0 * cos(q0), a0 * sin(q0)]
            # 计算关节2的位置
            q1 = self.joint_angles[1]
            a1 = self.link_lengths[1]
            # 注意:q1是杆1相对于杆0的延长线的转角,而杆0相对水平线的转角是q0
            # 所以杆1相对水平线的转角是(q0+q1), 而joint2是杆1的末端
            self.joint2 = self.joint1 + [a1 * cos(q0 + q1), a1 * sin(q0 + q1)]
    
        def plot(self):
            """
            绘制当前状态下的机械臂
            """
            
            # 清理坐标系中的内容
            plt.cla()
    
            # 三个关节的坐标
            x = [self.joint0[0], self.joint1[0], self.joint2[0]]
            y = [self.joint0[1], self.joint1[1], self.joint2[1]]
            # 绘制这样的一条线——连杆0————连杆1——
            plt.plot(x, y, c="red", zorder=1)
            # 绘制三个黑圆点代表关节,zorder=2是为了让绘制的点盖在直线上面
            plt.scatter(x, y, c="black", zorder=2)
            # 绘制目标点
            global target_x,target_y
            plt.scatter(target_x,target_y,c='blue',marker='*')
            # 固定住坐标系,
            # 不让它乱变,不让我点击的坐标和它显示的坐标不是一个坐标
            plt.xlim(-2, 2)
            plt.ylim(-2, 2)
            
    
    
        def inverse_kinematic(self, x, y):
            """
            逆运动学求解要达到(x,y)需要转动的角度,
            返回机器人各关节需要转动的角度
            """
            a0 = self.link_lengths[0]
            a1 = self.link_lengths[1]
            q1 = arccos((x ** 2 + y ** 2 - a0 ** 2 - a1 ** 2) / (2 * a0 * a1))
            q0 = arctan2(y, x) - arctan2(a1 * sin(q1), a1 * cos(q1) + a0)
            return [q0, q1]
    
        def animation(self,x,y):
            _joint_angles = self.inverse_kinematic(x, y)
    
            # 将这个角度变化过程分解成一个1s内的执行15步的慢动作
            duration_time_seconds = 1
            actions_num = 15
            angles_per_action = (np.array(_joint_angles) - np.array(self.joint_angles))/actions_num
            plt.ion() # 开启交互模式不然没有动画效果
            for action_i in range(actions_num):
                
                self.joint_angles = np.array(self.joint_angles) + angles_per_action
                self.update_joints(self.joint_angles)
                self.plot()
                dt = duration_time_seconds/actions_num
                plt.pause(dt)
    
    
        
        def to_mouse_posi(self,event):
            """
            鼠标点击事件处理函数:记录鼠标在坐标系中的位置(x,y)
            然后将其设置为机器人要到达的目标点
            """
            global target_x, target_y
            if event.xdata == None or event.ydata == None:
                print("请在坐标系内选择一个点")
                return
            target_x = event.xdata
            target_y = event.ydata
            self.animation(target_x,target_y)
                
    
    # ---------------------------------
    def main():
        fig = plt.figure()
        arm_robot = TwoLinkArm()
        arm_robot.animation(target_x,target_y)
        fig.canvas.mpl_connect("button_press_event", arm_robot.to_mouse_posi)
        plt.ioff() # 一定要终止交互模式不然会一闪而过
        plt.show()
    
    
    if __name__ == "__main__":
        main()
        pass
    
    

    参考文献:
    [1] https://robotacademy.net.au/lesson/inverse-kinematics-for-a-2-joint-robot-arm-using-geometry/

  • 您还可以看一下 黄勇老师的Python从入门到实战 基础入门视频教程(讲解超细致)课程中的 子类不能继承父类的私有···小节, 巩固相关知识点

可以使用第三方库OpenCV来实现表情识别系统并将最后的识别结果截取数据存入数据库。

需要安装OpenCV和Python的数据库连接驱动程序

pip install opencv-python
pip install mysql-connector-python

编写代码来实现识别表情并将结果存储到数据库中。以下是一个简单的示例代码:

import cv2
import mysql.connector

# 连接数据库
cnx = mysql.connector.connect(user='your_username', password='your_password',
                                host='your_host', database='your_database')
cursor = cnx.cursor()

# 加载表情分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
smile_cascade = cv2.CascadeClassifier('haarcascade_smile.xml')

# 打开摄像头
cap = cv2.VideoCapture(0)

while True:
    # 读取一帧图像
    ret, frame = cap.read()

    # 转换为灰度图像
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 检测人脸
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)

    # 对每个人脸进行处理
    for (x,y,w,h) in faces:
        # 截取人脸图像
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = frame[y:y+h, x:x+w]

        # 检测眼睛
        eyes = eye_cascade.detectMultiScale(roi_gray)
        for (ex,ey,ew,eh) in eyes:
            cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

        # 检测微笑
        smiles = smile_cascade.detectMultiScale(roi_gray, scaleFactor=1.7, minNeighbors=22, minSize=(25, 25))
        for (sx,sy,sw,sh) in smiles:
            # 保存最后的识别结果
            result = "Smiling"
            cv2.rectangle(roi_color,(sx,sy),(sx+sw,sy+sh),(0,0,255),2)

    # 显示图像
    cv2.imshow('frame',frame)

    # 按下q键退出程序
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 关闭摄像头
cap.release()
cv2.destroyAllWindows()

# 将最后的识别结果存储到数据库中
query = "INSERT INTO emotions (emotion) VALUES (%s)"
values = (result,)
cursor.execute(query, values)
cnx.commit()

# 关闭数据库连接
cursor.close()
cnx.close()

这个代码使用OpenCV来检测人脸、眼睛和微笑,并将最后的识别结果存储到MySQL数据库中。