边缘和轮廓检测——计算机视觉的应用
极市导读
计算机视觉的重点是从计算机中的视频和图像中提取有意义的信息。在本文中,我们将从初学者开始探索一个使用 OpenCV 的出色计算机视觉项目。对于此项目,你还将看到描述、源代码和图像分类。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
边缘检测
使用高斯模糊算法,过滤掉图像。 在 Sobel 滤波器的帮助下,找出边缘的强度和方向。 通过应用非极大值抑制来隔离更强的边缘并将它们细化为一条像素宽的线。 使用滞后来隔离最简单的边缘。
pip3 install opencv-python matplotlib numpy
import cv2
import numpy as np
import matplotlib.pyplot as plt
# read the image
image = cv2.imread("little_flower.jpg")
# convert it to grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# show the grayscale image
plt.imshow(gray, cmap="gray")
plt.show()
# perform the canny edge detector to detect image edges
edges = cv2.Canny(gray, threshold1=30, threshold2=100)
import NumPy as np
import cv2
cap = cv2.VideoCapture(0)
while True:
_, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 30, 100)
cv2.imshow("edges", edges)
cv2.imshow("gray", gray)
if cv2.waitKey(1) == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
轮廓检测
输入图像的标准化是它应该始终是二进制形式。这就是为什么我们需要将其转换为二进制格式。 用于查找轮廓的 OpenCV 函数是 findContours()。 最后,我们必须绘制这些轮廓来显示图像。
pip3 install matplotlib opencv-python
import cv2
import matplotlib.pyplot as plt
# read the image
image = cv2.imread("thumbs_up_down.jpg")
# convert to RGB
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# convert to grayscale
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
# create a binary thresholded image
_, binary = cv2.threshold(gray, 225, 255, cv2.THRESH_BINARY_INV)
# show it
plt.imshow(binary, cmap="gray")
plt.show()
# find the contours from the thresholded image
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# draw all contours
image = cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
# show the image with the drawn contours
plt.imshow(image)
plt.show()
轮廓检测和边缘检测的区别
结论
如果觉得有用,就请分享到朋友圈吧!
公众号后台回复“CVPR21检测”获取CVPR2021目标检测论文下载~
# CV技术社群邀请函 #
备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)
即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群
每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~
评论