我已经验证了我的Python和openCV库绝对可以正常工作。让我们说一个简单的cv2.imshow()与IDLE一起使用时可以正常工作。但是当我尝试使用同一代码使用其他IDE(例如Visual Studio和Pyscripter)时,IDE无法显示图像并出现错误。但是当我尝试打印(cv2。版本)时,它工作正常。这意味着我的IDE可以使用openCV库。我的pyscripter也提供了与VS相同的输出。我已经禁用了任何防病毒软件。为什么只有IDLE有效?
import cv2
print(cv2.__version__)
img = cv2.imread('cat.jpg')
cv2.imshow('img', img)`
python(64位):3.7.5 opencv(点):4.1.1 Visual Studio:2019年16.3.8
更新: 我发现此错误:
cv2。错误:OpenCV(4.1.1)C:\ projects \ opencv-python \ opencv \ modules \ highgui \ src \ window.cpp:352:错误:(-215:断言失败)size.width> 0 && size.height> 0在函数'cv :: imshow'
所以我在VS中添加了c ++模块,并将这一行添加到代码中:
cv2.waitKey(0)
cv2.destroyAllWindows()
它可以工作,但是与IDLE相比有点滞后,有人可以解释一下为什么吗?
答案 0 :(得分:0)
您在其他IDE上遇到哪种错误?如果您执行print(img)
,会在其他IDE上获得None
吗?
此外,如果您提供pip list
,我可以查看是否可以使用您当前安装的软件包重现您的错误。
您是否尝试过将虚拟环境用于python(virtualenv,Anaconda或Miniconda)?这是使用不同版本的python和您的软件包而不与系统python冲突的好方法。
我在Anaconda conda create -n test python=3.7 opencv jupyter
上使用软件包设置了一个新环境,并像您提到的那样在opencv中运行了命令。它在我安装的以下IDE中起作用:
对于每个IDE,您都必须将它们指向使用您的虚拟环境设置的python解释器(我可以提供更详细的说明)。我怀疑python的设置可能与您其他IDE的设置不同。 import sys; print(sys.path)
可能会告诉您情况是否如此。也许后端是不同的-问题在于,变量太多,最好创建一个虚拟环境以查看是否遇到相同的错误。
编辑:我做了一个Jupyter Notebook,可以用来测试。如果您希望它运行,可以单击右上角(or start in Colab)的活页夹。重点是,如果您下载了此笔记本并在Python环境中运行它,则它应该可以工作(我在笔记本中包含了conda设置说明)。 NBViewer,GitHub Repository