OpenCV:边缘检测

ゞ 浴缸里的玫瑰 2022-10-01 10:54 302阅读 0赞
  • 使用OpenCV自带函数完成边缘检测

    import cv2
    import numpy as np
    import random

    img = cv2.imread(‘test.png’,1)
    imgInfo = img.shape
    height = imgInfo[0]
    width = imgInfo[1]
    cv2.imshow(‘image0’,img)

    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    imgG = cv2.GaussianBlur(gray,(3,3),0)
    dst = cv2.Canny(img,50,50)

    cv2.imshow(‘image1’,dst)
    cv2.waitKey(0)

对比效果如下:
在这里插入图片描述

  • 自己编写代码完成边缘检测

    import cv2
    import numpy as np
    import random
    import math

    img = cv2.imread(‘test.png’,1)
    imgInfo = img.shape
    height = imgInfo[0]
    width = imgInfo[1]
    cv2.imshow(‘image0’,img)

    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    dst = np.zeros((height,width,1),np.uint8)
    for i in range(height-2):

    1. for j in range(width-2):
    2. gy = gray[i,j]*1+gray[i,j+1]*2+gray[i,j+2]*1-gray[i+2,j]*1-gray[i+2,j+1]*2-gray[i+2,j+2]*1
    3. gx = gray[i,j]*1+gray[i+1,j]*2+gray[i+2,j]*1-gray[i,j+2]*1-gray[i+1,j+2]*2-gray[i+2,j+2]*1
    4. grad = math.sqrt(gx*gx+gy*gy)
    5. if grad>50:
    6. dst[i,j] = 255
    7. else:
    8. dst[i,j] = 0

    cv2.imshow(‘image1’,dst)
    cv2.waitKey(0)

对比效果如下:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,302人围观)

还没有评论,来说两句吧...

相关阅读

    相关 opencv边缘检测

        在讨论边缘算子之前,首先给出一些术语的定义:  (1)边缘:灰度或结构等信息的突变处,边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。  (2)

    相关 openCV实现图像边缘检测

    最近自己在做一个有关图像处理的小项目,涉及到图像的边缘检测、直线检测、轮廓检测以及角点检测等,本文首先介绍图像的边缘检测,使用的是Canny边缘检测算法,具体代码以及检测效果如