边沿检测(轮子)

常用三种边沿检测:

import cv2
import os
import shutil
import random
import numpy as np


def canny(image):
    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    image = cv2.GaussianBlur(image, (5, 5), 0)
    canny = cv2.Canny(image, 30, 150)
    return canny

def sobel(image):
    # 水平梯度
    sobelX = cv2.Sobel(image, cv2.CV_64F, 1, 0)
    sobelX = np.uint8(np.absolute(sobelX))
    # 垂直梯度
    sobelY = cv2.Sobel(image, cv2.CV_64F, 0, 1)
    sobelY = np.uint8(np.absolute(sobelY))
    sobelCombined = cv2.bitwise_or(sobelX, sobelY)
    return sobelCombined

def laplacian(image):
    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    gray_lap = cv2.Laplacian(image, cv2.CV_16S,ksize = 3)
    dst = cv2.convertScaleAbs(gray_lap)
    return dst

if __name__ == '__main__':
    path = r'C:\Users\shi\Desktop\jyz_out'
    aug_path = r'C:\Users\shi\Desktop\Result'
    for i, im in enumerate(os.listdir(path)):
        print(im)
        img = cv2.imdecode(np.fromfile(os.path.join(path, im), dtype=np.uint8), cv2.IMREAD_COLOR)
        img = laplacian(img)
        cv2.imencode('.png', img)[1].tofile(os.path.join(aug_path, im))

 

posted @ 2022-05-06 15:37  cn_gzb  阅读(34)  评论(0编辑  收藏  举报