凡科建站是不是免费的,可信的专业网站建设,排版漂亮的网站,网站建设服务合同交印花税轮廓可以简单认为成将连续的点#xff08;连着边界#xff09;连在一起的曲线#xff0c;具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 • 为了更加准确#xff0c;要使用二值化图像。在寻找轮廓之前#xff0c;要进行阈值化处理或者 Canny 边界检…轮廓可以简单认为成将连续的点连着边界连在一起的曲线具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 • 为了更加准确要使用二值化图像。在寻找轮廓之前要进行阈值化处理或者 Canny 边界检测。 • 查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话你应该将原始图像存储到其他变量中。 • 在 OpenCV 中查找轮廓就像在黑色背景中超白色物体。你应该记住要找的物体应该是白色而背景应该是黑色。 让我们看看如何在一个二值图像中查找轮廓 cv2.findContours() 是 OpenCV 中用于查找图像中轮廓的函数。该函数的基本语法如下
contours, hierarchy cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])参数说明
image: 输入图像通常为二值图像例如阈值化后的图像。mode: 轮廓检索模式有如下几种选择 cv2.RETR_EXTERNAL: 只检测最外层的轮廓。cv2.RETR_LIST: 检测所有轮廓不建立轮廓层次。cv2.RETR_CCOMP: 检测所有轮廓建立两层轮廓层次。cv2.RETR_TREE: 检测所有轮廓建立完整的轮廓层次。 method: 轮廓逼近方法有如下几种选择 cv2.CHAIN_APPROX_NONE: 存储所有的轮廓点。cv2.CHAIN_APPROX_SIMPLE: 压缩水平、垂直和斜率方向的元素只保留其端点。cv2.CHAIN_APPROX_TC89_L1 和 cv2.CHAIN_APPROX_TC89_KCOS: 应用 Teh-Chin 链逼近算法。 contours: 输出参数存储检测到的轮廓。hierarchy: 输出参数存储轮廓的层次信息。offset: 可选参数偏移值通常不需要使用。
import cv2
# 读取图像
img cv2.imread( rC:\Users\mzd\Desktop\opencv\images.jpg)
# 将图像转换为灰度
gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 使用阈值处理图像
ret, thresh cv2.threshold(gray, 127, 255, 0)# 查找轮廓
contours, hierarchy cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 在原始图像上绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)# 显示原始图像和带有轮廓的图像
cv2.imshow(Original Image, img)
cv2.imshow(Contour Image, thresh)# 等待用户按下任意键
cv2.waitKey(0)
cv2.destroyAllWindows()这个示例演示了如何使用 cv2.findContours() 函数查找图像中的轮廓并使用 cv2.drawContours() 函数在原始图像上绘制这些轮廓。