lihodeev писал(а): ↑Ср сен 02, 2020 3:08 pm
tarasfrompir писал(а): ↑Ср сен 02, 2020 2:37 pm
уменьшай картинку и соответсветнно размер нейронки для распознавания - просто долго грузит саму обученную сеть
где тут...
Код: Выделить всё
# load the image, resize it to have a width of 600 pixels (while
# maintaining the aspect ratio), and then grab the image dimensions
image = cv2.imread(args["image"])
image = imutils.resize(image, width=600)
(h, w) = image.shape[:2]
# construct a blob from the image
imageBlob = cv2.dnn.blobFromImage(
cv2.resize(image, (300, 300)), 1.0, (300, 300),
задержка я так понимаю не в распознавании (если на прямую дать команду на распознавание, то время около 3 сек. ) , а в обработке моего кода и обработке ffmpega-
exec('ffmpeg -y -i "rtsp://192.168.1.4:554/user=admin_password=255990_channel=1_stream=0.sdp?real_stream" -t 5 -f mp4 -vcodec libx264 -pix_fmt yuv420p -an -r 15 /var/www/html/cms/cached/webcam_recorder/out.mp4');
//вытаскивем фото с потока и сохраняем
exec('ffmpeg -i /var/www/html/cms/cached/webcam_recorder/out.mp4 -r 1 -f image2 /home/pi/test_reg/images/cam.jpg', $result);
ну так тут же не правильно сделано - ты сразу пишеш видео а потом только его распознаеш - а нужно ффмпегом брать кадр в секунду (я брал два) - запихивать его в память - а потом с памяти напрямую распознавать минуя запись
где '-r', '2', - это 2 кадра в секунду
вот типо кусок кода моего
Код: Выделить всё
CREATE_NO_WINDOW = 0x08000000
command = [ 'c:/_majordomo/apps/ffmpeg/ffmpeg',
'-i', camnumber,
'-pix_fmt', 'rgb24',
'-ss', '0',
'-to', str(timetochek),
'-r', '2',
'-vcodec', 'rawvideo',
'-an','-sn', #-an, -sn disables audio and sub-title processing respectively
'-f', 'image2pipe', '-'] # we need to output to a pipe
pipe = sp.Popen(command, stdout = sp.PIPE, stderr = sp.PIPE, creationflags = CREATE_NO_WINDOW)
stop = 0
for i in range(int(timetochek)*2-2):
raw_image = pipe.stdout.read(1280*720*3)
image1 = numpy.fromstring(raw_image, dtype='uint8')
image = image1.reshape((720,1280,3))
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Get all face from the video waiting
faces = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=8, minSize=(100, 100), flags = 0)
# For each face in faces
for(x,y,w,h) in faces:
# Recognize the face belongs to which ID
prediction, conf= recognizer.predict(gray[y:y+h,x:x+w])
face_id = usersname[int(prediction)]
face_id = str(face_id[0:-3])
print (face_id, conf, rumname, camnumber)
if int(conf)< int(porog):
rna = requests.get('http://127.0.0.1/objects/?object='+(str(face_id))+'&op=set&p=atHome&v=1')
rna = requests.get('http://127.0.0.1/objects/?object='+(str(face_id))+'&op=set&p=seenAt&v='+rumname)
rna = requests.get('http://127.0.0.1/objects/?object='+rumname+'&op=set&p=activeUser&v='+(str(face_id)))
stop = 1
if stop == 1:
break
# Display the video waiting with the bounded rectangle
# write video frame to file just to verify
#videoFrameName = 'Video_Frame{0}.jpg'.format(i)
#cv2.imwrite(videoFrameName, gray)
# Close all windows
cv2.destroyAllWindows()
pipe.terminate()