Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cv2.imread始终返回非类型python 3.6_Python_Python 3.x_Opencv - Fatal编程技术网

cv2.imread始终返回非类型python 3.6

cv2.imread始终返回非类型python 3.6,python,python-3.x,opencv,Python,Python 3.x,Opencv,cv2.imread始终返回非类型 我有以下代码: path = cv2.imread('D:/XXX/image.jpg') 返回的数组为非类型 但是当我使用 path = cv2.imread('image.jpg') 我得到了正确的数组。 只有在使用完整路径时才会出现问题。 我也试过反斜杠和双斜杠,但没什么区别。以前也有很多类似的问题,我还没有得到合适的答案。 文件路径和文件名都正确 我使用的是Python版本3.6和openCV版本3.4.3 更新 我尝试使用tkinter file

cv2.imread始终返回非类型

我有以下代码:

path = cv2.imread('D:/XXX/image.jpg')
返回的数组为非类型

但是当我使用

path = cv2.imread('image.jpg')
我得到了正确的数组。 只有在使用完整路径时才会出现问题。 我也试过反斜杠和双斜杠,但没什么区别。以前也有很多类似的问题,我还没有得到合适的答案。 文件路径和文件名都正确

我使用的是Python版本3.6和openCV版本3.4.3

更新
我尝试使用tkinter filedialog.askopenfilename获取文件路径。但不成功。

您正确地使用了它,但遗漏了一个参数。 调用cv2.imreadjpeg_文件,0生成ndtype数组对象

但是,请尝试此操作,并确保图像文件的大小不是零

img = cv2.imread(filename_name,0)
正如医生所说

    Use the function cv2.imread() to read an image. The image should be in the working directory or a full path of image should be given.

Second argument is a flag which specifies the way image should be read.

cv2.IMREAD_COLOR : Loads a color image. Any transparency of image will be neglected. It is the default flag.
cv2.IMREAD_GRAYSCALE : Loads image in grayscale mode
cv2.IMREAD_UNCHANGED : Loads image as such including alpha channel
Note Instead of these three flags, you can simply pass integers 1, 0 or -1 respectively.
See the code below:

import numpy as np
import cv2

# Load an color image in grayscale
img = cv2.imread('messi5.jpg',0)

我认为你应该使用双反斜杠:“\\\”我唯一能想到的是路径有点不正确。尝试通过命令行导航到它以检查其有效性?使用os.path.joinD:,XXX,image.jpg多个参数,如果您希望跨平台兼容和/或不确定确切的目录分隔符语法,则每个目录一个。@rockikz:alredy尝试了这个方法。如果第二个选项有效,您可以使用os.getcwd检查目录是什么,也可以使用os.path.existsfile\u path检查文件是否存在于这样的路径中。第二个参数作为可选参数它可以在地图上看到。需要时,应使用常数,即cv2.IMREAD_灰度,而不是0。该标志的默认值为cv2.IMREAD_COLOR当图像位于工作目录中时,此选项有效,但当我使用完整路径时,此选项无效。@api55完美,没有深入查看。使用幻数是一种反模式-此代码甚至无法通过基本代码检查。|将imread的第二个参数从默认的cv2.imread_颜色更改为cv2.imread_灰度不会影响返回的数据类型。它始终是一个numpy数组,除非加载失败,然后返回None。它唯一会改变的是从文件加载图像后可能进行的转换-在这种情况下,它将始终返回一个单通道图像,而不是始终返回一个3通道图像。我认为社区应该删除该答案,因为该答案不符合询问的目的。