import cv2
import numpy as np
cap=cv2.VideoCapture(0)
#camera.set(3,640) #设置分辨率
#camera.set(4,480)
#camera.set(3,640) #设置分辨率
#camera.set(4,480)
while True:
ret, frame = cap.read()
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
如果要读取usb摄像头,序号0改为1即可。
BTW,在darkflow中,命令
主要是0改为1
def camera(self):
file = self.FLAGS.demo
SaveVideo = self.FLAGS.saveVideo
if file == 'camera':
file = 1####################0
else:
assert os.path.isfile(file), \
'file {} does not exist'.format(file)
camera = cv2.VideoCapture(file)########file
camera.set(3,640) #设置分辨率
camera.set(4,480)
if file == 1:#############0
self.say('Press [ESC] to quit demo')
assert camera.isOpened(), \
'Cannot capture source'
if file == 1:#camera window###############0
#cv2.namedWindow('camera',0)###################0
_, frame = camera.read()#################none
cv2.imshow('frame',frame)###############none
#height, width, _ = frame.shape
#cv2.resizeWindow('', width, height)
# while True:
# _,frame = camera.read(0)
# height, width, _ = frame.shape
# cv2.imshow('frame',frame)
# cv2.resizeWindow('', width, height)
# if cv2.waitKey(1) & 0xFF == ord('q'):
# break
# cap.release()
# cv2.destroyAllWindows()
else:
_, frame = camera.read()
height, width, _ = frame.shape
if SaveVideo:
fourcc = cv2.VideoWriter_fourcc(*'XVID')
if file == 1:#camera window#############0
fps = 1 / self._get_fps(frame)
if fps < 1:
fps = 1
else:
fps = round(camera.get(cv2.CAP_PROP_FPS))
videoWriter = cv2.VideoWriter(
'video.avi', fourcc, fps, (width, height))
# buffers for demo in batch
buffer_inp = list()
buffer_pre = list()
elapsed = int()
start = timer()
self.say('Press [ESC] to quit demo')
# Loop through frames
while camera.isOpened():
elapsed += 1
_, frame = camera.read()
if frame is None:
print ('\nEnd of Video')
break
preprocessed = self.framework.preprocess(frame)
buffer_inp.append(frame)
buffer_pre.append(preprocessed)
# Only process and imshow when queue is full
if elapsed % self.FLAGS.queue == 0:
feed_dict = {self.inp: buffer_pre}
net_out = self.sess.run(self.out, feed_dict)
for img, single_out in zip(buffer_inp, net_out):
postprocessed = self.framework.postprocess(
single_out, img, False)
if SaveVideo:
videoWriter.write(postprocessed)
if file == 1: #camera window###############0
cv2.imshow('', postprocessed)
# Clear Buffers
buffer_inp = list()
buffer_pre = list()
if elapsed % 5 == 0:
sys.stdout.write('\r')
sys.stdout.write('{0:3.3f} FPS'.format(
elapsed / (timer() - start)))
sys.stdout.flush()
if file == 1: #camera window####################0
choice = cv2.waitKey(1)
if choice == 27: break
sys.stdout.write('\n')
if SaveVideo:
videoWriter.release()
camera.release()
if file == 1: #camera window#################0
cv2.destroyAllWindows()
如果要读取usb摄像头,序号0改为1即可。
BTW,在darkflow中,命令
python flow --model cfg/yolo-voc-6c.cf-1 --demo camera
是用默认的自带摄像头进行检测,如需改用usb摄像头,则需改写help.py中相关代码主要是0改为1
def camera(self):
file = self.FLAGS.demo
SaveVideo = self.FLAGS.saveVideo
if file == 'camera':
file = 1####################0
else:
assert os.path.isfile(file), \
'file {} does not exist'.format(file)
camera = cv2.VideoCapture(file)########file
camera.set(3,640) #设置分辨率
camera.set(4,480)
if file == 1:#############0
self.say('Press [ESC] to quit demo')
assert camera.isOpened(), \
'Cannot capture source'
if file == 1:#camera window###############0
#cv2.namedWindow('camera',0)###################0
_, frame = camera.read()#################none
cv2.imshow('frame',frame)###############none
#height, width, _ = frame.shape
#cv2.resizeWindow('', width, height)
# while True:
# _,frame = camera.read(0)
# height, width, _ = frame.shape
# cv2.imshow('frame',frame)
# cv2.resizeWindow('', width, height)
# if cv2.waitKey(1) & 0xFF == ord('q'):
# break
# cap.release()
# cv2.destroyAllWindows()
else:
_, frame = camera.read()
height, width, _ = frame.shape
if SaveVideo:
fourcc = cv2.VideoWriter_fourcc(*'XVID')
if file == 1:#camera window#############0
fps = 1 / self._get_fps(frame)
if fps < 1:
fps = 1
else:
fps = round(camera.get(cv2.CAP_PROP_FPS))
videoWriter = cv2.VideoWriter(
'video.avi', fourcc, fps, (width, height))
# buffers for demo in batch
buffer_inp = list()
buffer_pre = list()
elapsed = int()
start = timer()
self.say('Press [ESC] to quit demo')
# Loop through frames
while camera.isOpened():
elapsed += 1
_, frame = camera.read()
if frame is None:
print ('\nEnd of Video')
break
preprocessed = self.framework.preprocess(frame)
buffer_inp.append(frame)
buffer_pre.append(preprocessed)
# Only process and imshow when queue is full
if elapsed % self.FLAGS.queue == 0:
feed_dict = {self.inp: buffer_pre}
net_out = self.sess.run(self.out, feed_dict)
for img, single_out in zip(buffer_inp, net_out):
postprocessed = self.framework.postprocess(
single_out, img, False)
if SaveVideo:
videoWriter.write(postprocessed)
if file == 1: #camera window###############0
cv2.imshow('', postprocessed)
# Clear Buffers
buffer_inp = list()
buffer_pre = list()
if elapsed % 5 == 0:
sys.stdout.write('\r')
sys.stdout.write('{0:3.3f} FPS'.format(
elapsed / (timer() - start)))
sys.stdout.flush()
if file == 1: #camera window####################0
choice = cv2.waitKey(1)
if choice == 27: break
sys.stdout.write('\n')
if SaveVideo:
videoWriter.release()
camera.release()
if file == 1: #camera window#################0
cv2.destroyAllWindows()
没有评论:
发表评论