1、将缺失api-ms-win-core-path-l1-1-0dll放至c:/windows/system32下面,
链接:百度网盘下载链接
提取码:33l2
2、缺少opencv_videoio_ffmpeg453_64.dll,使用pyinstaller打包时使用以下指令
pyinstaller -F -w OpencvCamera.py --add-binary 'E:\QingDaoTongChan\WindowsWork\VisualStudioCodeDemo\PythonDemo\OpencvCameraDemo\cv2\opencv_videoio_ffmpeg453_64.dll;.'
3、将封装好的exe文件必须放到英文目录下面运行
4、目前只在windows10下测试成功,windows7下测试失败,原因可能和vc++环境、opencv的版本、windows7系统有关系
5、代码如下:
OpencvCamera.py
import cv2
#import ctypes
#import os
#temppath=os.getcwd()
#try:
# temp=ctypes.windll.LoadLibrary( temppath+'\\opencv_videoio_ffmpeg453_64.dll' )
#except:
# pass
import numpy as np
import pickle
import matplotlib.pyplot as plt
import logging
logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别,打印到本地文本文档
filename='new.log',
filemode='a',##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
#a是追加模式,默认如果不写的话,就是追加模式
format=
'%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
#日志格式
)
#logging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',
# level=logging.DEBUG)#利用logging.basicConfig()打印信息到控制台,将logging.basicConfig()中的level 的值设置为logging.DEBUG, 所有debug, info, warning, error, critical 的log都会打印到控制台。
#logging.debug('debug 信息')
#logging.warning('warning 信息')
#logging.error('error 信息')
#logging.critical('critial 信息')
cap = cv2.VideoCapture(0)
logging.info("{} is {}".format('cv2.VideoCapture(0)',cap))
cap.set(3,1280)
cap.set(4,720)
if not cap.isOpened():
logging.info('Camera open Failed')
exit()
while True:
ret,frame = cap.read()
logging.info("{} is {}".format('cap.read()',ret))
# Our operations on the frame come here
#gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
#cv2.imshow('frame',gray)
if frame is not None:
cv2.imshow('frame',frame)
if cv2.waitKey(50) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()