cv2.imread找不到标志位。

23

最近我开始使用openCV和Python,并决定分析一些示例代码,以了解如何完成一些任务。

然而,我找到的示例代码一直报错:

Traceback (most recent call last):
File "test.py", line 9, in <module>
img = cv2.imread(sys.argv[1],cv2.CV_LOAD_IMAGE_COLOR) ## Read image file
AttributeError: 'module' object has no attribute 'CV_LOAD_IMAGE_COLOR'

我使用的代码可以在下面找到:

import cv2
import sys
import numpy as np

if len(sys.argv) != 2: ## Check for error in usage syntax
    print "Usage : python display_image.py <image_file>"

else:
    img = cv2.imread(sys.argv[1], cv2.CV_LOAD_IMAGE_COLOR) ## Read image file

if img == None: ## Check for invalid input
    print "Could not open or find the image"
else:
    cv2.namedWindow('Display Window') ## create window for display
    cv2.imshow('Display Window', img) ## Show image in the window
    print "size of image: ", img.shape ## print size of image
    cv2.waitKey(0) ## Wait for keystroke
    cv2.destroyAllWindows() ## Destroy all windows

这是我的安装问题吗?我使用这个网站作为安装Python和OpenCV的指南。


1
这对我有用。在 import cv2 之后,你能否添加 print cv2.__file__ 并让我们知道它显示了什么?你导入的 cv2 模块可能不是你想要的那个。 - DSM
@DSM 当我输入print cv2.__file__时,我收到了/usr/local/lib/python2.7/dist-packages/cv2.so。 - Elijah1210
1
@Elijah1210 看起来不错。cv2.__version__ 显示什么?同时尝试使用 1 作为标志 (1CV_LOAD_IMAGE_COLOR 标志的值)。 - Igonato
6
尝试使用cv2.IMREAD_GRAYSCALE、cv2.IMREAD_UNCHANGED、cv2.IMREAD_COLOR等参数,分别对应0、-1、1来读取图片。记得保持原意并简明易懂。 - Abid Rahman K
@Igonato 我得到了3.0.0-dev版本。它可以使用1作为标志运行。 - Elijah1210
@AbidRahmanK 它可以与cv2.IMREAD_COLOR和1标志一起使用。 - Elijah1210
2个回答

42

OpenCV 3.0有一些命名空间的改变,这可能是其中之一。另一个答案中给出的函数引用是针对OpenCV 2.4.11的,不幸的是,包括枚举参数在内有重大的重命名。

根据这里的OpenCV 3.0示例,正确的参数是cv2.IMREAD_COLOR。

根据C语言版OpenCV 3.0参考手册,CV_LOAD_IMAGE_COLOR仍然存在。

从上述资源和这里得出我的结论是,他们在OpenCV 3.0 Python实现中进行了更改。

目前来看,最好使用以下内容:

img = cv2.imread("link_to_your_file/file.jpg", cv2.IMREAD_COLOR) 

4
为什么一个软件包会如此明目张胆地破坏向后兼容性?这真是让人气愤。 - user4779

-3

你试过这个吗?

import cv2
import sys
import numpy as np


cv2.CV_LOAD_IMAGE_COLOR = 1 # set flag to 1 to give colour image
#cv2.CV_LOAD_IMAGE_COLOR = 0 # set flag to 0 to give a grayscale one


img = cv2.imread("link_to_your_file/file.jpg", cv2.CV_LOAD_IMAGE_COLOR) 


cv2.namedWindow('Display Window') ## create window for display
cv2.imshow('Display Window', img) ## Show image in the window
print ("size of image: "), img.shape ## print size of image
cv2.waitKey(0) ## Wait for keystroke
cv2.destroyAllWindows() ## Destroy all windows

看看imread,同时也要关注this


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接