为什么imread
在Anaconda Spyder中工作却为什么在Anaconda VS Code中产生None
?
cv2.GetBuildINformation()
检查了CV2安装import os
print(os.path.dirname(os.path.realpath(__file__)))
import cv2
import numpy as np
print(cv2.getBuildInformation())
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
print(dir_path)
img = cv2.imread("faces.jpg",1)
print(img)
img打印为None
-但仅在VS Code中打印。
路径打印正常。 python版本是3.6.4。
cv2.getBuildInformation()
返回:
General configuration for OpenCV 3.4.2 =====================================
以及由于混乱而删除的更多信息。
任何有用的建议将不胜感激。 谢谢
答案 0 :(得分:2)
我相信问题出在两个IDE中工作目录的配置上。既然如此,我们知道VS Code看不到faces.jpg
,您只需为其提供文件的完整路径,然后检查其是否正常运行。
您可以使用os.getcwd()
来检查当前的工作目录,然后相应地将相对路径调整为faces.jpg
。
答案 1 :(得分:1)
作为对Tim Mironov的回应,我使用os库重新编写了代码以生成路径,这似乎更加健壮,因为它现在在两个IDE中都可以正常工作:
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
image_path = os.path.join(dir_path, "faces.jpg")
img = cv2.imread(image_path,1)
现在,为什么VS Studio有时只找不到文件?好吧,这与 File> Open Folder 和 File> Open File
如果您打开一个文件夹,则该文件夹将成为您当前的工作目录-即使您从另一个文件夹中打开另一个单独的文件,这正是我在这种情况下所做的...
您可以为文件添加配置,以追求Python使用您喜欢的任何文件夹。只需添加调试配置并编辑launch.json
https://code.visualstudio.com/docs/python/debugging#_set-configuration-options的文档将帮助任何人略微地做到这一点。上面概述的行为在这里进行了解释:
“ cwd 指定调试器的当前工作目录,该目录是代码中使用的任何相对路径的基本文件夹。 如果省略,则默认为$ {workspaceFolder}(在VS Code中打开的文件夹)。“
在VS Code的launch.json文件中使用 $ {fileDirname} 代替默认选项$ {workspaceFolder},将当前工作目录设置为当前正在执行的Python脚本的文件夹:>
{
"name": "your_program.py",
"type": "python",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"console": "integratedTerminal"
}