Python从一个array中查找另一个array的index方法

在array中查找array2元素所在的位置,如果该元素存在就输出索引位置,如果不存在就输出-1,例如:

array = ['a','k','m','x','w','z']
array2 = ['b','w','a']
a1 = []
for i in array2:
	if i in array:
		a1.append(array.index(i))
	else:
		a1.append(-1)
print(a1)

输出结果:[-1, 4, 0]

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要使用OpenCV库来读取视频每一帧的图像,并使用dlib库来检测眼睛的位置和长宽比。然后,我们将这些数据记录下来,并使用Matplotlib库绘制折线图。 以下是一个示例代码,您可以根据需要进行修改: ```python import cv2 import dlib import numpy as np import matplotlib.pyplot as plt # 使用dlib的预训练模型来检测眼睛位置 detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat") # 定义绘图参数 plt.rcParams['figure.figsize'] = (10, 8) plt.rcParams['xtick.labelsize'] = 12 plt.rcParams['ytick.labelsize'] = 12 plt.xlabel('Frame Number', fontsize=14) plt.ylabel('Eye Aspect Ratio', fontsize=14) # 定义一些常量 LEFT_EYE_INDEX = [36, 37, 38, 39, 40, 41] RIGHT_EYE_INDEX = [42, 43, 44, 45, 46, 47] # 定义一个函数,用于计算每一帧的眼睛长宽比 def eye_aspect_ratio(eye): A = np.linalg.norm(eye[1] - eye[5]) B = np.linalg.norm(eye[2] - eye[4]) C = np.linalg.norm(eye[0] - eye[3]) ear = (A + B) / (2.0 * C) return ear # 读取视频文件 cap = cv2.VideoCapture("video.mp4") # 定义一个空列表,用于存储每一帧的眼睛长宽比 ear_list = [] while True: # 读取一帧图像 ret, frame = cap.read() if not ret: break # 转换图像为灰度图 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 使用dlib的检测器检测人脸 faces = detector(gray, 0) for face in faces: # 使用dlib的预测器来查找面部特征点 landmarks = predictor(gray, face) # 提取左眼和右眼的坐标 left_eye = np.array([(landmarks.part(i).x, landmarks.part(i).y) for i in LEFT_EYE_INDEX]) right_eye = np.array([(landmarks.part(i).x, landmarks.part(i).y) for i in RIGHT_EYE_INDEX]) # 计算左眼和右眼的长宽比 left_ear = eye_aspect_ratio(left_eye) right_ear = eye_aspect_ratio(right_eye) # 计算平均长宽比 ear = (left_ear + right_ear) / 2.0 # 将眼睛长宽比保存到列表 ear_list.append(ear) # 绘制眼睛长宽比随时间变化的折线图 plt.plot(ear_list) plt.show() ``` 请注意,该代码未经过完全测试,您可能需要根据自己的需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值