首页 > 解决方案 > 在 Python 中使用 OpenCv2 编写多个图像

问题描述

我得到了一个充满图像的数据集。我的目标是将这些图像转换为灰度。我可以用一张图片轻松地做到这一点,但我需要用多张图片来做。这是我的代码;

import cv2
import glob

path = "/path/*.jpg"

for file in glob.glob(path):
    img = cv2.imread(file)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imshow('Gray image', gray)
    cv2.imwrite('/path/cat' + '_gray.jpg', gray)

当我运行这个脚本时,它只转换一个图像,但我的目标是转换路径中的所有图像。我真的是图像处理和 OpenCv2 模块的初学者。现在已经感谢您的帮助。

标签: pythonopencvimage-processing

解决方案


'/path/cat' + '_gray.jpg'/path/cat_gray.jpg无论输入文件名如何,总是给你。

您可能希望在那里使用原始文件名的某些部分,您可以使用os.path模块中的函数找到它。

例如:

import cv2
import glob
import os.path

path = "/path/*.jpg"

for file in glob.glob(path):
    img = cv2.imread(file)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imshow('Gray image', gray)
    basename = os.path.basename(file)  # e.g. MyPhoto.jpg
    name = os.path.splitext(basename)[0]  # e.g. MyPhoto
    cv2.imwrite('/path/' + name + '_gray.jpg', gray)

推荐阅读