Python獲取二值圖的邊緣/輪廓

這篇文章主要利用python去做一個邊緣提取的例子。

效果展示

在這裏插入圖片描述

要求

  • python3
  • binary images(二值圖)
  • python的opencv庫; 如果沒有可以直接 pip3 install opencv-python

代碼

代碼很簡單,直接複製代碼並且修改下文件路徑,運行即可

#  -*- coding: utf-8 -*- 
import cv2
import os

def Edge_Extract(root):
    img_root = os.path.join(root,'img_masks')			# 修改爲保存圖像的文件名
    edge_root = os.path.join(root,'img_edge')			# 結果輸出文件

    if not os.path.exists(edge_root):
        os.mkdir(edge_root)

    file_names = os.listdir(img_root)
    img_name = []

    for name in file_names:
        if not name.endswith('.png'):
            assert "This file %s is not PNG"%(name)
        img_name.append(os.path.join(img_root,name[:-4]+'.png'))

    index = 0
    for image in img_name:
        img = cv2.imread(image,0)
        cv2.imwrite(edge_root+'/'+file_names[index],cv2.Canny(img,30,100))
        index += 1
    return 0


if __name__ == '__main__':
    root = '/Data/Datasets/binary_mask_path/'	# 修改爲你對應的文件路徑
    Edge_Extract(root)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章