使用 OpenCV 将一系列图像转换为数组并将 RGB 数组转换为灰度

Convert series of images into an array using OpenCV and convert the RGB array to gray scale

您好,我正在尝试将一系列图像转换为数组,然后将 RGB 转换为灰度。

在我的工作文件夹中,我有 x 个 frames.png,我需要读取数组中的所有这些帧,然后将每个帧 (RGB) 转换为灰度。

对于一帧,我的代码是:

import numpy as np
import cv2 as cv
from PIL import Image

# Read image

Image = cv.imread('frame0.png') 


# RGB to Gray Scale

GS = cv.cvtColor(Image, cv.COLOR_BGR2GRAY)
th, Gray = cv.threshold(GS, 128, 192, cv.THRESH_OTSU)

有什么想法吗?

您可以使用 os 从文件夹中读取文件。使用“endswith”功能,您可以提取文件格式并将它们全部拉出。

这是一个工作代码

import numpy as np
import cv2 as cv
import os

for file in os.listdir("/mydir"): # images folder path
    if file.endswith((".png",".jpg")): # you can add formats
        img = cv.imread(file)
        GS = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
        th, Gray = cv.threshold(GS, 128, 192, cv.THRESH_OTSU)
        cv.imwrite("converted-"+file,Gray)