如何在Python中通过Opencv处理多个图像

时间:2019-03-28 08:10:43

标签: python opencv image-processing computer-vision

我在一个文件夹中有多个图像,我想对其进行处理并将一些opencv函数应用于它们。

我正在尝试查找文件夹中存在的每个图像的轮廓。
我一次可以处理一个。

单张图片的代码

img = cv2.imread('abc.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

_, thresh = cv2.threshold(gray,85,155,cv2.THRESH_BINARY_INV)

thresh = cv2.GaussianBlur(thresh,(11,11),0)

_, contours, _ = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

final = cv2.drawContours(img,contours, -1, (0,255,0), 3)

cv2.imshow('Output', final)
cv2.waitKey(0)
cv2.destroyAllWindows()  

我想要对文件夹中存在的多个图像应用这些操作。

1 个答案:

答案 0 :(得分:1)

您可以编写一个for循环,然后在该目录上循环,并将此过程应用于目录中的每个图像:

for image in os.listdir('path_ti_images_folder'):
    img = cv2.imread(os.path.join('path_to_images_folder', image))
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

    _, thresh = cv2.threshold(gray,85,155,cv2.THRESH_BINARY_INV)

    thresh = cv2.GaussianBlur(thresh,(11,11),0)

    _, contours, _ = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

    final = cv2.drawContours(img,contours, -1, (0,255,0), 3)

    cv2.imshow('Output', final)
    cv2.waitKey(0)
    cv2.destroyAllWindows()