加了图像识别和视频识别
This commit is contained in:
parent
67b9d8c91c
commit
9698cd8fa2
81
ai_UI.py
81
ai_UI.py
@ -357,7 +357,7 @@ class Main:
|
||||
ai.load_datasets()
|
||||
ai.train_cnn()
|
||||
|
||||
def gesture_recognition(self):
|
||||
def gesture_recognition_camera(self):
|
||||
if self.camera is None:
|
||||
self.camera = cv2.VideoCapture(0, cv2.CAP_DSHOW)
|
||||
self.camera.set(3, 1280)
|
||||
@ -394,10 +394,83 @@ class Main:
|
||||
elif key == 27:
|
||||
break
|
||||
|
||||
def gesture_recognition_video(self, filedir):
|
||||
self.detector = HandDetector()
|
||||
cnn = torch.load("CNN.pkl")
|
||||
out_label = cnn.out_label
|
||||
result = []
|
||||
disp = ""
|
||||
cap = cv2.VideoCapture(filedir)
|
||||
while True:
|
||||
ret, img = cap.read()
|
||||
img = self.detector.find_hands(img)
|
||||
lm_list, bbox = self.detector.find_position(img)
|
||||
|
||||
if lm_list.any():
|
||||
x_1, y_1 = bbox["bbox"][0], bbox["bbox"][1]
|
||||
data = torch.Tensor(lm_list)
|
||||
data = data.unsqueeze(0)
|
||||
data = data.unsqueeze(0)
|
||||
|
||||
test_output = cnn(data)
|
||||
result.append(torch.max(test_output, 1)[1].data.cpu().numpy()[0])
|
||||
if len(result) > 5:
|
||||
disp = str(out_label[stats.mode(result)[0][0]])
|
||||
result = []
|
||||
|
||||
cv2.putText(img, disp, (x_1, y_1), cv2.FONT_HERSHEY_PLAIN, 3,
|
||||
(0, 0, 255), 3)
|
||||
|
||||
cv2.imshow("camera", img)
|
||||
key = cv2.waitKey(1)
|
||||
if cv2.getWindowProperty('camera', cv2.WND_PROP_VISIBLE) < 1:
|
||||
break
|
||||
elif key == 27:
|
||||
break
|
||||
cap.release()
|
||||
|
||||
|
||||
def gesture_recognition_img(self, filedir):
|
||||
self.detector = HandDetector()
|
||||
cnn = torch.load("CNN.pkl")
|
||||
out_label = cnn.out_label
|
||||
result = []
|
||||
disp = ""
|
||||
img = cv2.imread(filedir)
|
||||
img = self.detector.find_hands(img)
|
||||
while True:
|
||||
|
||||
lm_list, bbox = self.detector.find_position(img)
|
||||
|
||||
if lm_list.any():
|
||||
x_1, y_1 = bbox["bbox"][0], bbox["bbox"][1]
|
||||
data = torch.Tensor(lm_list)
|
||||
data = data.unsqueeze(0)
|
||||
data = data.unsqueeze(0)
|
||||
|
||||
test_output = cnn(data)
|
||||
result.append(torch.max(test_output, 1)[1].data.cpu().numpy()[0])
|
||||
if len(result) > 5:
|
||||
disp = str(out_label[stats.mode(result)[0][0]])
|
||||
result = []
|
||||
|
||||
cv2.putText(img, disp, (x_1, y_1), cv2.FONT_HERSHEY_PLAIN, 3,
|
||||
(0, 0, 255), 3)
|
||||
|
||||
cv2.imshow("camera", img)
|
||||
key = cv2.waitKey(1)
|
||||
if cv2.getWindowProperty('camera', cv2.WND_PROP_VISIBLE) < 1:
|
||||
break
|
||||
elif key == 27:
|
||||
break
|
||||
|
||||
if __name__ == '__main__':
|
||||
solution = Main()
|
||||
my_datasets_dir = "test"
|
||||
solution.make_datasets(my_datasets_dir, 100)
|
||||
solution.train(my_datasets_dir)
|
||||
solution.gesture_recognition()
|
||||
# solution.make_datasets(my_datasets_dir, 100)
|
||||
# solution.train(my_datasets_dir)
|
||||
dir_video = "C:/Users/Liar/Pictures/Camera Roll/WIN_20220630_20_11_47_Pro.mp4"
|
||||
dir_img = "C:/Users/Liar/Pictures/Camera Roll/WIN_20220630_20_01_22_Pro.jpg"
|
||||
solution.gesture_recognition_camera()
|
||||
# solution.gesture_recognition_video(dir_video)
|
||||
# solution.gesture_recognition_img(dir_img)
|
||||
|
Loading…
x
Reference in New Issue
Block a user