【问题标题】:cv2.imwrite not saving imagecv2.imwrite 不保存图像
【发布时间】:2020-02-27 09:15:02
【问题描述】:

我对@9​​87654321@ 有疑问

有两个文件夹,photos 用于保存普通图像,gray 用于保存已更改的普通照片中的灰度图像

我想读取一张普通的图片,改成灰度图,然后保存灰度图

这是我的代码

import cv2
import os 
import glob

count = 0

os.chdir('./photos')
for file in glob.glob('*.jpg'):
    image = cv2.imread(file)
    image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    cv2.imwrite('./gray/grayscale{}.jpg'.format(count), image_gray)
    count += 1

image = cv2.imread(file) 有一个数组,所以image_gray = cv2.cvtColor(image, cv2.COLORBGR2GRAY) 也有一个数组。但是为什么我的cv2.imwrite 代码没有将灰度图像保存到文件夹中?我在这个论坛上搜索过答案,但没有一个人回答我的问题。任何答案将不胜感激。提前致谢!

【问题讨论】:

  • 路径可能不存在。具体来说,gray 目录不存在,因此通过手动创建文件夹或添加条件以检查路径是否存在,首先确保该文件夹存在。如果不存在则先创建文件夹

标签: python opencv cv2


【解决方案1】:

请不要这样做,尤其是chdir() 等:

os.chdir('./photos')
for file in glob.glob('*.jpg'):
    image = cv2.imread(file)
    image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    cv2.imwrite('./gray/grayscale{}.jpg'.format(count), image_gray)
    count += 1

相反,您可以更轻松地使用:

if not os.path.isdir( 'gray' ) :
    os.mkdir( 'gray' )  # make sure the directory exists

for i, file in enumerate(glob.glob('photos/*.jpg')):
    image = cv2.imread(file)
    image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    cv2.imwrite('./gray/grayscale_%03d.jpg' % i, image_gray)

【讨论】:

    【解决方案2】:

    你应该检查你是否在设计目录上

    # Check current working directory.
    retval = os.getcwd()
    print "Current working directory %s" % retval
    

    确保“灰色”文件夹是否存在。我认为您的代码没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      相关资源
      最近更新 更多