问题遇到的现象和发生背景
picture在pycharm中,虽然为空的模块,但还是引用一个窗口来调参数?
用代码块功能插入代码,请勿粘贴截图
import cv2
import numpy as np
import os
import picture
font = cv2.FONT_HERSHEY_SIMPLEX #设置字体
size = 0.5 #设置大小
width, height = 300, 300 #设置拍摄窗口大小
# width, height = 480, 640 #设置拍摄窗口大小
x0,y0 = 300, 100 #设置选取位置
cnt = 1
mode = 'train'
directory = 'data/'+mode+'/'
cap = cv2.VideoCapture(0) #开摄像头
if __name__ == "__main__":
while(1):
flag, frame = cap.read() #读取摄像头的内容
# 返回的第一个参数为bool类型,用来表示是否读取到帧,如果为False说明已经读到最后一帧。frame为读取到的帧图片
frame = cv2.flip(frame, 2)
roi, res, ret, fourier_result, efd_result = picture.binaryMask(frame, x0, y0, width, height) #取手势所在框图并进行处理
cv2.imshow("roi", roi) # 显示手势框图
cv2.imshow("res", res)
cv2.imshow("ret", ret)
# 获取现有图像的计数
count = {'zero':len(os.listdir(directory + "0")),
'one': len(os.listdir(directory + "1")),
'two': len(os.listdir(directory + "2")),
'three': len(os.listdir(directory + "3")),
'four': len(os.listdir(directory + "4")),
'five': len(os.listdir(directory + "5")),
'six': len(os.listdir(directory + "6")),
'seven': len(os.listdir(directory + "7")),
'eight': len(os.listdir(directory + "8")),
'nine': len(os.listdir(directory + "9")),
'ten': len(os.listdir(directory + "10")),
}
# 将每一组的计数打印到屏幕上
cv2.putText(frame, "MODE : " + mode, (10, 50), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "IMAGE COUNT", (10, 100), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "ZERO : " + str(count['zero']), (10, 120), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "ONE : " + str(count['one']), (10, 140), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "TWO : " + str(count['two']), (10, 160), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "THREE : " + str(count['three']), (10, 180), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "FOUR : " + str(count['four']), (10, 200), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "FIVE : " + str(count['five']), (10, 220), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "SIX : " + str(count['six']), (10, 240), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "SEVEN: " + str(count['seven']), (10, 260), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "EIGHT: " + str(count['eight']), (10, 280), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "NINE: " + str(count['nine']), (10, 300), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
cv2.putText(frame, "TEN: " + str(count['ten']), (10, 320), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1)
#按 j、l、k、i 分别将选框左移,右移,上移,下移
#按'q'键退出录像
key = cv2.waitKey(1) & 0xFF # 按键判断并进行一定的调整
if key == ord('i'):
y0 += 5
if key == ord('k'):
y0 -= 5
if key == ord('l'):
x0 += 5
if key == ord('j'):
x0 -= 5
# interrupt = cv2.waitKey(10)
# if interrupt & 0xFF == 27: # esc key
# break
if key == ord('w'):
cv2.imwrite(directory + '0/' + '0_' + str(count['zero']+1) + '.jpg', roi)
if key == ord('1'):
cv2.imwrite(directory + '1/' + '1_' + str(count['one']+1) + '.jpg', roi)
if key == ord('2'):
cv2.imwrite(directory + '2/' + '2_' + str(count['two']+1) + '.jpg', roi)
if key == ord('3'):
cv2.imwrite(directory + '3/' + '3_' + str(count['three']+1) + '.jpg', roi)
if key == ord('4'):
cv2.imwrite(directory + '4/' + '4_' + str(count['four']+1) + '.jpg', roi)
if key == ord('5'):
cv2.imwrite(directory + '5/' + '5_' + str(count['five']+1) + '.jpg', roi)
if key == ord('6'):
cv2.imwrite(directory + '6/' + '6_' + str(count['six']+1) + '.jpg', roi)
if key == ord('7'):
cv2.imwrite(directory + '7/' + '7_' + str(count['seven']+1) + '.jpg', roi)
if key == ord('8'):
cv2.imwrite(directory + '8/' + '8_' + str(count['eight']+1) + '.jpg', roi)
if key == ord('9'):
cv2.imwrite(directory + '9/' + '9_' + str(count['nine']+1) + '.jpg', roi)
if key == ord('0'):
cv2.imwrite(directory + '10/' + '10_' + str(count['ten']+1) + '.jpg', roi)
if key == ord('q'):
break
cv2.imshow('frame', frame) #播放摄像头的内容
cap.release()
cv2.destroyAllWindows() #关闭所有窗口
运行结果及报错内容
picture在pycharm中,虽然为空的模块,但还是引用一个窗口来调参数?