为图像处理python从文件中读取多个图像

为图像处理python从文件中读取多个图像,python,image,opencv,glob,Python,Image,Opencv,Glob,嗨,我有一个脚本,可以在图像上运行图像处理。但我正试图通过循环或其他方式从一个文件中读取多个图像 e、 g C:\Users\student\Desktop\Don\program opencv version\Images\move1 move1包含名为frame1.jpg、frame2.jpg、frame3.jpg的图像 我用来运行映像进程的脚本类似于 img = cv2.imread('frame1.jpg') mimg = cv2.medianBlur(img,15) gimg

嗨,我有一个脚本,可以在图像上运行图像处理。但我正试图通过循环或其他方式从一个文件中读取多个图像

e、 g

C:\Users\student\Desktop\Don\program opencv version\Images\move1

move1包含名为frame1.jpg、frame2.jpg、frame3.jpg的图像

我用来运行映像进程的脚本类似于

img = cv2.imread('frame1.jpg')


mimg = cv2.medianBlur(img,15) 

gimg = cv2.cvtColor(mimg,cv2.COLOR_RGB2GRAY) 

ret,th1 = cv2.threshold(gimg, 160,255,cv2.THRESH_BINARY)

ret,th2 = cv2.threshold(th1, 160,255,cv2.THRESH_BINARY_INV)

cv2.imwrite('threshbinaryinv.jpg', th2)
我上面的脚本只能读取我手动键入的图像,例如“frame1.jg”。对不起,我对python很陌生。谢谢

编辑 这是我和你们一起编辑的代码帮助。。在回溯最近一次呼叫时仍出现错误: 文件C:\Users\student\Desktop\Don\program opencv version\prog.py,第32行,在 gimg=cv2.CVT彩色,cv2.COLOR\U RGB2GRAY将RBG转换为灰度 cv2.error:D:\Build\OpenCV\OpenCV-3.3.1\modules\imgproc\src\color.cpp:11048:error:-215 scn==3 | | scn==4在函数cv::cvtColor中

代码


您可以使用os.listdir获取指定路径中所有图像的名称,该路径为C:\Users\student\Desktop\Don\program opencv version\images。然后可以循环查看图像的名称,如:

import os    
import cv2
path_of_images = r"C:\Users\student\Desktop\Don\program (opencv version)\Images"
list_of_images = os.listdir(path_of_images)
for image in list_of_images:
    img = cv2.imread(os.path.join(path_of_images, image))
    """Your code here"""
可以使用for循环并生成新的str文件名,然后将其处理为:

IMG_FOLDER_PREFIX = "absolute/path/to/frame"
IMG_EXTENSION = ".jpg"
NUM_IMAGES = 10

for i in xrange(NUM_IMAGES):
    image_path = IMG_FOLDER_PREFIX + str(i) + IMG_EXTENSION
    img = cv2.imread(image_path)
    # Other Image Processing.

迭代图像的更好方法是os.listdir、glob等,但在这种情况下,您可能无法控制文件的遍历顺序。

如果OP希望图像按特定顺序排列,该怎么办?这应该在问题本身中指定,不是吗?@pissall嘿,我尝试了代码。。但它也给出了与ZdaR给出的相同的错误。。os.ListDiErrorC:\Users\student\Desktop\Don\program opencv version\Images您可以使用r'your/path'或双斜杠来避免此问题。这篇文章中的答案将帮助你:我已经更新了我的答案。您需要提供图像的完整路径。所有图像均未命名为“frame1.jpg”、“frame2.jpg”等。问题是:move1包含名为frame1.jpg、frame2.jpg、frame3.jpg的图像@还有什么理由支持你的否决票吗?请帮助我使这个答案更具信息性。并且说我上面的脚本只能读取我手动键入的图像,例如“frame1.jg”。对不起,我对python很陌生。谢谢@ZdaR嘿!我试过上面的代码。我在IMG\u FOLDER\u PREFIX=C:\Users\student\Desktop\Don\program opencv version\Images\move1处出错。错误为unicode错误“UnicodeScape”编解码器无法在位置2-3中找到字节:截断\uxxxxx转义可能重复的
IMG_FOLDER_PREFIX = "absolute/path/to/frame"
IMG_EXTENSION = ".jpg"
NUM_IMAGES = 10

for i in xrange(NUM_IMAGES):
    image_path = IMG_FOLDER_PREFIX + str(i) + IMG_EXTENSION
    img = cv2.imread(image_path)
    # Other Image Processing.