繁体   English   中英

为什么从 OpenCV python 示例中读取图像会给出错误,而在 C++ 中却没有给出错误?

[英]Why does reading an image from OpenCV python samples giving error where as it does not give error in c++?

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

import cv2
import numpy as np

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

它给出了以下错误

[ 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'

因为 C++ 版本没有给出任何错误


#include <iostream>

#include <opencv2/core.hpp>
#include <opencv2/ml.hpp>
#include <opencv2/highgui.hpp>

using namespace std;
using namespace cv;
using namespace cv::ml;
int main()
{

    Mat image;
    image=imread(samples::findFile("lena.jpg"));
    imshow("lena.jpg",image);
    waitKey(0);

    return 0;
}

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

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

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

在 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上有一些相关文档(但还不够有用)

而不是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)

现在尝试通过以下命令运行您的代码:
python filename.py -i "./lena.jpg"

尝试这个!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM