使用OpenCV检测和跟踪人的手

问题描述 投票:0回答:1

我是OpenCV和Tensorflow的新手。我使用Tensorflow 2.0创建了一个分类器,以检测26种美国手语字母。

这是CNN代码。

# Designing our CNN
i = Input(shape=(IMAGE_SIZE[0],IMAGE_SIZE[0],3))
x = Conv2D(32, (3, 3), activation='relu', padding='same')(i)
x = BatchNormalization()(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = MaxPooling2D((2, 2))(x)
# x = Dropout(0.2)(x)
x = Conv2D(64, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = Conv2D(64, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = MaxPooling2D((2, 2))(x)
# x = Dropout(0.2)(x)
x = Conv2D(128, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = Conv2D(128, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = MaxPooling2D((2, 2))(x)
# x = Dropout(0.2)(x)

# x = GlobalMaxPooling2D()(x)
x = Flatten()(x)
x = Dropout(0.2)(x)
x = Dense(1024, activation='relu')(x)
x = Dropout(0.2)(x)
x = Dense(1024, activation='relu')(x)
x = Dropout(0.2)(x)
x = Dense(K, activation='softmax')(x)

model = Model(i, x)

这里是完整代码的链接。https://colab.research.google.com/drive/1_9MVqaRpk5UnZxc8l4OC78JaHlXkAwrL

这是图像的预览分类。

enter image description here

它能够正确检测所有26个字母。这是混乱矩阵。enter image description here

我能够保存h5文件,该文件能够对仅包括手的100 x 100图像进行分类。

稍后我可以使用OpenCV从网络摄像头获取提要,但是我不确定如何使用我的模型来检测手并在其上创建一个边界框以提取手并将其提供给ASL CNN分类器。我确实尝试使用一些Haar级联来检测手,但是似乎检测得不太好。

我如何从视频源中检测到手,就像这张图片中的那只?enter image description here

我曾考虑过使用YOLO,但是我不确定如何训练它来定制手部图像或将h5文件输入到YOLO分类器中,并使用它在网络摄像头的实时视频源上跨手创建边框。

欢迎任何指向资源的链接。先感谢您。

python opencv tensorflow yolo haar-classifier
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.