import numpy as npimport matplotlib.pyplot as pltimport os.pathimport scipyimport argparseimport mathimport cv2import sysimport timesys.path.append('/usr/local/lib/python2.7/site-packages')# Make sure that caffe is on the python path:caffe_root = '/SegNet/caffe-segnet/'sys.path.insert(0, caffe_root + 'python')import caffe# Import argumentsparser = argparse.ArgumentParser()parser.add_argument('--model', type=str, required=True)parser.add_argument('--weights', type=str, required=True)parser.add_argument('--colours', type=str, required=True)args = parser.parse_args()net = caffe.Net(args.model,args.weights,caffe.TEST)caffe.set_mode_gpu()input_shape = net.blobs['data'].data.shapeoutput_shape = net.blobs['argmax'].data.shapelabel_colours = cv2.imread(args.colours).astype(np.uint8)cv2.namedWindow("Input")cv2.namedWindow("SegNet")cap = cv2.VideoCapture(0) # Change this to your webcam ID, or file name for your video filerval = Truewhile rval:start = time.time()rval, frame = cap.read()if rval == False:breakend = time.time()print '%30s' % 'Grabbed camera frame in ', str((end - start)*1000), 'ms'start = time.time()frame = cv2.resize(frame, (input_shape[3],input_shape[2]))input_image = frame.transpose((2,0,1))# input_image = input_image[(2,1,0),:,:] # May be required, if you do not open your data with opencvinput_image = np.asarray([input_image])end = time.time()print '%30s' % 'Resized image in ', str((end - start)*1000), 'ms'start = time.time()out = net.forward_all(data=input_image)end = time.time()print '%30s' % 'Executed SegNet in ', str((end - start)*1000), 'ms'start = time.time()segmentation_ind = np.squeeze(net.blobs['argmax'].data)segmentation_ind_3ch = np.resize(segmentation_ind,(3,input_shape[2],input_shape[3]))segmentation_ind_3ch = segmentation_ind_3ch.transpose(1,2,0).astype(np.uint8)segmentation_rgb = np.zeros(segmentation_ind_3ch.shape, dtype=np.uint8)cv2.LUT(segmentation_ind_3ch,label_colours,segmentation_rgb)segmentation_rgb = segmentation_rgb.astype(float)/255end = time.time()print '%30s' % 'Processed results in ', str((end - start)*1000), 'ms\n'cv2.imshow("Input", frame)cv2.imshow("SegNet", segmentation_rgb)key = cv2.waitKey(1)if key == 27: # exit on ESCbreakcap.release()cv2.destroyAllWindows()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。