读取OpenCV 3.0.0-dev中的灰度图像

65

我想直接读取黑白图片。

我最近将OpenCv版本更新到3.0.0-dev,之前使用的代码不再起作用。

   img = cv2.imread(f, cv2.CV_LOAD_IMAGE_GRAYSCALE)

在2.4版本中运行良好,但在新版本中不起作用,因为没有字段CV_LOAD_IMAGE_GRAYSCALE。有什么建议吗?

注意:我知道cv2.imread(f,0)可以工作,但我不喜欢在我的代码中使用未命名的常量。谢谢!


3
你尝试过使用cv2.LOAD_IMAGE_GRAYSCALE吗?我猜所有的CV_都被重命名了。 - Micka
3个回答

98

这个标志已更名为cv2.IMREAD_GRAYSCALE。一般来说,现在的标志都有一个前缀名称,与它们所指的功能相关(例如:imread标志以IMREAD_开头,cvtColor标志以COLOR_开头,等等)。


1
太棒了。感谢您的解释,这可能在未来也会有所帮助。 - elaRosca
1
文档应相应地进行更新:http://docs.opencv.org/trunk/modules/imgcodecs/doc/reading_and_writing_images.html?highlight=imread#Mat imread(const String& filename, int flags) - Eduard Feicho
@EduardFeicho的链接失效了,这里是最新的链接:https://docs.opencv.org/4.6.0/d8/d6a/group__imgcodecs__flags.html#ga61d9b0126a3e57d9277ac48327799c80 - Nivatius

34

试一下,这对我有效

import cv2
im_gray = cv2.imread('gray_image.png', cv2.IMREAD_GRAYSCALE)
thresh = 127
im_bw = cv2.threshold(im_gray, thresh, 255, cv2.THRESH_BINARY)[1]
cv2.imwrite('blackwhite.png', im_bw)

2

尝试这个,每次都对我有效

import cv2
gray_img = cv2.imread('img.png', 0)
cv2.imshow(gray_img)

7
我猜测是因为楼主写道:“我知道 cv2.imread(f,0) 可以工作,但我不喜欢在我的代码中使用未命名的常量”,所以遭到了负评。 - eric
而且OpenCV文档经常使用这样的语句:https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html - Eloy Pérez Torres

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