OpenCV:边缘检测
使用OpenCV自带函数完成边缘检测
import cv2
import numpy as np
import randomimg = 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 mathimg = 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):for j in range(width-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
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
grad = math.sqrt(gx*gx+gy*gy)
if grad>50:
dst[i,j] = 255
else:
dst[i,j] = 0
cv2.imshow(‘image1’,dst)
cv2.waitKey(0)
对比效果如下:
还没有评论,来说两句吧...