糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > python canny算子_Python - OpenCV 之Canny算子边缘提取

python canny算子_Python - OpenCV 之Canny算子边缘提取

时间:2023-11-03 21:45:33

相关推荐

python canny算子_Python - OpenCV 之Canny算子边缘提取

#!--*-- coding=utf-8 --*--

import cv2

import os

import argparse

'''

基于OpenCV Canny 算子的提取图像边缘

'''

#

def edge_extract(in_file, out_file, lowThreshold=10, Gaussianblur_size=19):

'''

:param in_file:

:param out_file:

:param lowThreshold: 阈值, 如:low - 10; medium - 23; high - 60

'''

img = cv2.imread(in_file)

if img is None:

return 'Please check input image.'

# 对BGR三个通道分别检测边缘

grayB = img[:, :, 0]

grayG = img[:, :, 1]

grayR = img[:, :, 2]

# 高斯模糊过滤掉部分细节

blurB = cv2.GaussianBlur(grayB, (Gaussianblur_size, Gaussianblur_size), 0)

blurG = cv2.GaussianBlur(grayG, (Gaussianblur_size, Gaussianblur_size), 0)

blurR = cv2.GaussianBlur(grayR, (Gaussianblur_size, Gaussianblur_size), 0)

# opencv Canny算法

highThreshold = lowThreshold * 2 # Canny算子的阈值上限

edges_B = cv2.Canny(blurB, lowThreshold, highThreshold, apertureSize=3)

edges_G = cv2.Canny(blurG, lowThreshold, highThreshold, apertureSize=3)

edges_R = cv2.Canny(blurR, lowThreshold, highThreshold, apertureSize=3)

# 3个通道分别提取的边缘融合到一块

edge = cv2.bitwise_or(edges_B, edges_G)

edge = cv2.bitwise_or(edge, edges_R)

# 默认生成的是黑底白边缘线, 故黑白反转,使背景为白色,边缘线为黑色

edge = 255 - edge

cv2.imwrite(out_file, edge)

def parse_args():

"""Parse input arguments."""

parser = argparse.ArgumentParser()

parser.add_argument('-i', dest='input')

parser.add_argument('-o', dest='output')

args = parser.parse_args()

return args

if __name__ == '__main__':

args = parse_args()

edge_extract(args.input, args.output)

print('[INFO]Done.')

如果觉得《python canny算子_Python - OpenCV 之Canny算子边缘提取》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。