当前位置: 首页 > news >正文

Python 识别图片上标点位置

Python识别图片上标点位置

要识别图片上的标点位置,可以使用Python中的OpenCV库。以下是几种常见的方法:

方法一:使用颜色阈值识别

import cv2
import numpy as np# 读取图片
image = cv2.imread('image.jpg')# 转换为HSV颜色空间
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)# 定义标点的颜色范围(例如红色标点)
lower_red = np.array([0, 120, 70])
upper_red = np.array([10, 255, 255])
mask1 = cv2.inRange(hsv, lower_red, upper_red)lower_red = np.array([170, 120, 70])
upper_red = np.array([180, 255, 255])
mask2 = cv2.inRange(hsv, lower_red, upper_red)mask = mask1 + mask2# 查找轮廓
contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 获取标点位置
for cnt in contours:area = cv2.contourArea(cnt)if area > 10:  # 过滤小噪点x, y, w, h = cv2.boundingRect(cnt)center_x = x + w//2center_y = y + h//2print(f"标点位置: ({center_x}, {center_y})")# 在图像上标记cv2.circle(image, (center_x, center_y), 5, (0, 255, 0), -1)# 显示结果
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

方法二:使用模板匹配

import cv2
import numpy as np# 读取图片和标点模板
image = cv2.imread('image.jpg')
template = cv2.imread('dot_template.jpg')# 获取模板尺寸
h, w = template.shape[:2]# 进行模板匹配
res = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8  # 匹配阈值
loc = np.where(res >= threshold)# 标记所有匹配位置
for pt in zip(*loc[::-1]):center_x = pt[0] + w//2center_y = pt[1] + h//2print(f"标点位置: ({center_x}, {center_y})")cv2.rectangle(image, pt, (pt[0]+w, pt[1]+h), (0, 255, 0), 2)# 显示结果
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

方法三:使用特征点检测

import cv2# 读取图片
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用Blob检测器
params = cv2.SimpleBlobDetector_Params()
params.filterByArea = True
params.minArea = 10
params.maxArea = 100
params.filterByCircularity = True
params.minCircularity = 0.7detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(gray)# 获取标点位置
for kp in keypoints:x, y = kp.ptprint(f"标点位置: ({x}, {y})")cv2.circle(image, (int(x), int(y)), 5, (0, 255, 0), -1)# 显示结果
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

注意事项

  1. 根据实际标点的颜色、大小和形状调整参数。
  2. 预处理图像(如高斯模糊、二值化等)可以提高识别准确率。
  3. 对于复杂背景,可能需要结合多种方法。
  4. 考虑使用深度学习的方法(如YOLO)进行更精确的识别。

选择哪种方法取决于标点的具体特征和图像条件。颜色阈值法适合颜色鲜明的标点,模板匹配适合形状固定的标点,而特征点检测适合圆形或斑点状的标点。

http://www.xdnf.cn/news/317395.html

相关文章:

  • CSDN文章都是VIP
  • Ubuntu 使用dotfiles个性化配置模板
  • 使用 Apache POI 生成包含文本和图片的 Word 文档
  • 【MCP】从0到1实现一个MCP Client
  • 【Python类(Class)完全指南】面向对象编程入门
  • 阿里云服务器-centos部署定时同步数据库数据-dbswitch
  • 【Django】中间件
  • 软件工程(三):模块的内聚模型
  • 如何在大型项目中解决 VsCode 语言服务器崩溃的问题
  • 政务浏览器 一站式首页功能配置说明
  • 极狐GitLab 命名空间的类型有哪些?
  • css animation 动画属性
  • 华为昇腾910B通过vllm部署InternVL3-8B教程
  • 大模型系列(五)--- GPT3: Language Models are Few-Shot Learners
  • IPFS集群部署
  • Linux/AndroidOS中进程间的通信线程间的同步 - 信号量
  • Java游戏服务器开发流水账(1)游戏服务器的架构浅析
  • Wireshark抓账号密码
  • 一文走进GpuGeek | conda常用命令
  • Prompt(提示词)工程师,“跟AI聊天”
  • Java版ERP管理系统源码(springboot+VUE+Uniapp)
  • FID和IS的区别
  • STM32裸机开发问题汇总
  • (1-1)Java的JDK、JRE、JVM三者间的关系
  • 淘宝按图搜索商品(拍立淘)爬虫实战指南
  • 技术视界|青龙机器人训练地形详解(二):添加地形到训练环境
  • 光伏“531”政策倒逼下,光储充一体化系统如何破解分布式光伏收益困局?
  • sql错题(3)
  • 学习记录:DAY23
  • 发那科机器人3(机器人编程基础)