python opencv实现图像分割(附代码)

AI应用开发相关目录

本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧
适用于具备一定算法及Python使用基础的人群

  1. AI应用开发流程概述
  2. Visual Studio Code及Remote Development插件远程开发
  3. git开源项目的一些问题及镜像解决办法
  4. python实现UDP报文通信
  5. python实现日志生成及定期清理
  6. Linux终端命令Screen常见用法
  7. python实现redis数据存储
  8. python字符串转字典
  9. python实现文本向量化及文本相似度计算
  10. python对MySQL数据的常见使用
  11. 一文总结python的异常数据处理示例
  12. 基于selenium和bs4的通用数据采集技术(附代码)
  13. 基于python的知识图谱技术
  14. 一文理清python学习路径
  15. Linux、Git、Docker常用指令
  16. linux和windows系统下的python环境迁移
  17. linux下python服务定时(自)启动
  18. windows下基于python语言的TTS开发
  19. python opencv实现图像分割


需求概述

图片中存在多个铭牌,这样会影响铭牌中信息抽取精度,由此需利用CV技术对图像进行分割。

代码

import cv2
import numpy as np
import os
from datetime import datetime


# 读取图像
image = cv2.imread(r'C:\Users\12258\Desktop\0.png', cv2.IMREAD_GRAYSCALE)

# 二值化图像,以便更好地检测轮廓
_, thresholded = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)

# 检测轮廓
contours, _ = cv2.findContours(thresholded, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# 设置轮廓大小的阈值
contour_area_threshold = 5000  # 你可以根据需要调整这个值

# 创建一个与原图同样大小的黑色图像用于绘制轮廓
contour_image = np.zeros_like(image)

flag = 0
# 遍历所有检测到的轮廓
for contour in contours:
    # 计算轮廓的面积
    area = cv2.contourArea(contour)

    # 如果轮廓面积大于阈值,则在图像上绘制轮廓
    if area > contour_area_threshold:

        # 获取轮廓的边界框
        x, y, w, h = cv2.boundingRect(contour)

        # 切割图像
        cropped_image = image[y:y + h, x:x + w]

        # 保存切割后的图像
        filename = f'contour_{flag}.png'
        print(filename)
        cv2.imwrite(os.path.join('output_folder', filename), cropped_image)

        cv2.drawContours(contour_image, [contour], -1, (255), 2)
        flag += 1

    # 显示结果图像
cv2.imshow('Contours above threshold', contour_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果

原图

在这里插入图片描述
轮廓提取
在这里插入图片描述

分割结果

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的中青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值