为什么从OpenCV python样本读取图像会给出错误,而在c ++中却不会给出错误?

时间:2019-12-15 05:11:42

标签: python opencv pycharm sample

我正在尝试在opencv python中读取图像

is_after_kth

它给出了以下错误

import cv2
import numpy as np

# Read images
image=cv2.imread(cv2.samples.findFile("lena.jpg"))
cv2.imshow("image",image)
cv2.waitKey(0)

其中C ++版本不会给出任何错误

[ WARN:0] global C:\projects\opencv-python\opencv\modules\core\src\utils\samples.cpp (59) cv::samples::findFile cv::samples::findFile('lena.jpg') => ''
Traceback (most recent call last):
  File "D:/all_libraries/main.py", line 5, in <module>
    image=cv2.imread(cv2.samples.findFile("lena.jpg"))
cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\core\src\utils\samples.cpp:62: error: (-2:Unspecified error) OpenCV samples: Can't find required data file: lena.jpg in function 'cv::samples::findFile'

我已经在pycharm中安装了OpenCV 4.1.1 C ++版本也是4.1.1 操作系统Windows

4 个答案:

答案 0 :(得分:2)

在Python中,findFile函数使用环境变量来定义搜索路径。安装OpenCV时,将创建一个名称类似于C:\ something \ samples \ data的文件夹(我在这里有点猜测是因为我使用Linux而不是Windows)。因此,您需要将环境变量OPENCV_SAMPLES_DATA_PATH设置为C:\ something \ samples \ data值,然后尝试运行代码。

https://docs.opencv.org/3.4/d6/dba/group__core__utils__samples.html上有一些相关文档(但还不够有用)

答案 1 :(得分:1)

在运行第一个OpenCV教程时,我遇到了同样的问题,以下内容对我有用。我正在使用PyCharm社区和python。 addSamplesDataSearchSubDirectory无法正常工作。

cv.samples.addSamplesDataSearchPath("C:\\......\\opencv\\sources\\samples\\data")
img = cv.imread(cv.samples.findFile("starry_night.jpg"))

答案 2 :(得分:0)

而不是az keyvault key show --name "%KEY_NAME%" --vault-name "VAULT_NAME" ,请尝试使用image=cv2.imread(cv2.samples.findFile("lena.jpg")) ,即您将文件路径作为参数。这是适合您的问题的完整代码:

image=cv2.imread(args["image1"])

现在尝试通过以下命令运行代码:
import cv2 import numpy as np import argparse ap = argparse.ArgumentParser() ap.add_argument("-i", "--image", required=True, help="Path to the image") args = vars(ap.parse_args()) # Read images image=cv2.imread(args["image"]) cv2.imshow("image",image) cv2.waitKey(0)

答案 3 :(得分:0)

试试这个!

  1. 转到环境变量创建一个新参数“OPENCV_SAMPLES_DATA_PATH”
  2. 将位置“...\sample\data”添加到您的值中
  3. 重启你的 IDE
  4. 您可以自动运行示例数据。