1.换源(不一定要的)
为什么换源?
是否为下载第三方源的慢and出错而烦恼。这个的原因是因为我们下载的库都是在国外的,自然下载就很慢。换成国内源就可以解决掉这个问题了
换源后pip下载第三方库就会很快的(注:如果用开发工具(比如Anaconda、pycharm、Visual Studio) 的就不用换了,一般这种自带都下载很快的(我的Visual Studio就很快),而且还不知道用开发工具是否可以这样换的)
该方法对安装纯python的有用(其他的可以自行测试)
方法一:临时使用镜像源下载Python包:
以numpy为例:
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
其他镜像源地址:
阿里云:http://mirrors.aliyun.com/pypi/simple/
方法二:永久更改镜像源
在 “C:\Users\用户名” 文件夹下,添加pip文件夹,文件夹内新建pip.ini文件,内容为:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
怎么知道已经成功用镜像源了?出现下面的图片样子
ps:建议用阿里镜像源(清华的有些包我试过会出错的)
原文地址2.安装opencv
安装opencv的命令行
pip install opencv-python
安装opencv-contrib-python
pip install opencv-contrib-python
ps:一般没有问题的了
3.用cv2.VideoCapture(0)调用不出摄像头
这个得一步一步排查
1)确定已经安装好库opencv-python和opencv-contrib-python
2)并且程序已经导入了import cv2 (感觉有点废话)
3)运行cv2.VideoCapture(0)没有报错,只是没有电脑摄像头没有反应
可以尝试一下这个
1>找到设置
2>在设置里面找到隐私
3>找到相机
4>确保以下箭头所指的该开的开了
如果还不行的话看下面
方法一:把cv2.VideoCapture(0)改成下面的
cv2.VideoCapture(0,cv2.CAP_DSHOW)
方法二:(仅适用于Windows操作系统)
打开cmd并输入:
setx OPENCV_VIDEOIO_PRIORITY_MSMF 0
ps:貌似我就是用方法2然后一劳永逸了,这样子也可以了cv2.VideoCapture(0)(记得重启电脑哦!)😂
可以尝试可以把下面的代码运行看看可以没
import cv2 as cv cap = cv.VideoCapture(0,cv.CAP_DSHOW) #更改API设置 flag = cap.isOpened() index = 1 while (flag): ret, frame = cap.read() frame = cv.flip(frame, 1) # 水平翻转 cv.imshow("Capture_Paizhao", frame) k = cv.waitKey(1) & 0xFF if k == ord('s'): # 按下s键,进入下面的保存图片操作 cv.imwrite(r"F:\PyCharm\Camera calibration\Aruco_Identify\0" + str(index) + ".jpg", frame) print(cap.get(3)) print(cap.get(4)) print("save" + str(index) + ".jpg successfuly!") print("-------------------------") index += 1 elif k == ord('q'): # 按下q键,程序退出 break cap.release() cv.destroyAllWindows()参考的博客 参考的博客
ps:反正我行了(还不行只能百度了)
解决摄像头问题的发现过程
一开始也是百度,但怎么也查不了,什么乱七八糟的还都不管用。
后面无意识的在cmd里面运行python,就是运行cv2.VideoCapture(0)
发现出现了一些错误(我在IDLE里面运行,什么错误都没有,所以很难找到出错的问题)
当时忘记截图,大概出现的错误信息类似是这样的
[ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-sxpsnz(我的错误,已经不见一块了)
[ WARN:1] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (674)
SourceReaderCB::~SourceReaderCB terminating async callback(博客上的类似的)
所以按照博客上的方法,就成功了。博客连接就是上面的文章末尾