OpenCV进行图形检测

OpenCv图形检测

绘制图像轮廓:

img = cv2.imread("image.png")
# 彩色图像转为变成单通道灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 灰度图像转为二值图像
t, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 检测图像中出现的所有轮廓,记录轮廓的每一个点
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
# 绘制所有轮廓,宽度为5,颜色为红色
cv2.drawContours(img, contours, -1, (0, 0, 255), 5)

为轮廓添加矩形框:

# 获取第一个轮廓的最小矩形边框,记录坐标和宽高
x, y, w, h = cv2.boundingRect(contours[0])
# 绘制红色矩形
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)

为轮廓添加圆形框:

contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
# 获取最小圆形边框的圆心点和半径
center, radius = cv2.minEnclosingCircle(contours[0])
# 圆心点横坐标转为近似整数
x = int(round(center[0]))
# 圆心点纵坐标转为近似整数
y = int(round(center[1]))
cv2.circle(img, (x, y), int(radius), (0, 0, 255), 2)

Canny边缘检测:

img = cv2.imread("image.png")
r1 = cv2.Canny(img, 10, 50)

直线检测:

img = cv2.imread("image.jpg")
# 复制原图
o = img.copy()
# 使用中值滤波进行降噪
o = cv2.medianBlur(o, 5)
gray = cv2.cvtColor(o, cv2.COLOR_BGR2GRAY)
binary = cv2.Canny(o, 50, 150)  # 绘制边缘图像
# 检测直线,精度为1,全角度,阈值为15,线段最短100,最小间隔为18
lines = cv2.HoughLinesP(binary, 1, np.pi / 180, 15, minLineLength=100, maxLineGap=18)
for line in lines:  # 遍历所有直线
    x1, y1, x2, y2 = line[0]  # 读取直线两个端点的坐标
    cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)  # 在原始图像上绘制直线

圆环检测:

img = cv2.imread("image.jpg")
o = img.copy()
o = cv2.medianBlur(o, 5)
gray = cv2.cvtColor(o, cv2.COLOR_BGR2GRAY)  # 从彩色图像变成单通道灰度图像
# 检测圆环,圆心最小间距为70,Canny最大阈值为100,投票数超过25。最小半径为10,最大半径为50
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 70, param1=100, param2=25, minRadius=10, maxRadius=50)
circles = np.uint(np.around(circles))  # 将数组元素四舍五入成整数
for c in circles[0]:  # 遍历圆环结果
    x, y, r = c  # 圆心横坐标、纵坐标和圆半径
    # 绘制圆环
    cv2.circle(img, (x, y), r, (0, 0, 255), 3)
    # 绘制圆心
    cv2.circle(img, (x, y), 2, (0, 0, 255), 3)

相关推荐

  1. OpenCV进行图形检测

    2024-01-24 10:48:04       42 阅读
  2. 【python】使用OpenCV进行行人检测

    2024-01-24 10:48:04       31 阅读
  3. opencv 传统图像识别检测

    2024-01-24 10:48:04       40 阅读
  4. OpenCV图像滤波、边缘检测

    2024-01-24 10:48:04       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-24 10:48:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-24 10:48:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-24 10:48:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-24 10:48:04       18 阅读

热门阅读

  1. QT基础篇(15)QT5多国语言国际化

    2024-01-24 10:48:04       29 阅读
  2. OpenCV基础-图像数字化

    2024-01-24 10:48:04       38 阅读
  3. docker基础

    2024-01-24 10:48:04       37 阅读
  4. 正则表达式

    2024-01-24 10:48:04       37 阅读
  5. Git Reset 详解:Soft、Mixed、Hard、Keep 选项

    2024-01-24 10:48:04       30 阅读
  6. 使用 ChatGPT 提升工作效率,我的建议是

    2024-01-24 10:48:04       37 阅读
  7. SASS简介及使用方法

    2024-01-24 10:48:04       34 阅读
  8. Frontend - SASS / SCSS 文件使用

    2024-01-24 10:48:04       35 阅读
  9. 【Go】依赖包管理

    2024-01-24 10:48:04       27 阅读
  10. 回调形式的 Refs 在 React 中的应用

    2024-01-24 10:48:04       30 阅读
  11. 软件工程测试2

    2024-01-24 10:48:04       26 阅读
  12. distinct和group by的功能、使用和底层原理

    2024-01-24 10:48:04       28 阅读
  13. IDEA内置HTTP CLIENT

    2024-01-24 10:48:04       27 阅读
  14. kafka入门(九):kafka分区分配策略

    2024-01-24 10:48:04       28 阅读