news 2026/5/1 9:28:25

探索机器视觉:从工业相机采集到模板匹配

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
探索机器视觉:从工业相机采集到模板匹配

机器视觉,OpenCV,Qt,工业相机采集,图像采集,图像处理,卡尺工具,找线,找圆,颜色检测,模板匹配,形状匹配,海康工业相机采集+基于形状的模板匹配界面,提前说明,形状匹配算法封装成dll直接调用的,其他都是源码,是不错的学习资料,程序资料

在当今的工业自动化和智能制造领域,机器视觉技术就像是一双敏锐的“眼睛”,能让机器像人类一样“看”懂周围的世界。今天咱们就来聊聊机器视觉里的那些事儿,涉及到 OpenCV、Qt、工业相机采集以及各种实用的图像处理工具。

工业相机采集与图像获取

工业相机采集是机器视觉系统的第一步,就好比我们人类睁开眼睛去接收外界的信息。这里我们选用海康工业相机,它在工业领域可是相当受欢迎。下面是一段简单的 Python 代码示例,用于海康工业相机的图像采集:

import cv2 from hikvisionapi import Client # 连接到海康相机 cam = Client('http://192.168.1.100', 'admin', 'password') # 获取图像 response = cam.Streaming.channels[101].picture(method='get', type='opaque_data') with open('temp.jpg', 'wb') as f: f.write(response.content) # 使用 OpenCV 读取图像 image = cv2.imread('temp.jpg') cv2.imshow('Captured Image', image) cv2.waitKey(0) cv2.destroyAllWindows()

代码分析

这段代码首先通过hikvisionapi库连接到海康相机,这里需要填写相机的 IP 地址、用户名和密码。接着,我们从相机的指定通道获取图像数据,并将其保存为temp.jpg文件。最后,使用 OpenCV 的imread函数读取该图像,并通过imshow函数显示出来。

图像处理与工具应用

采集到图像后,就需要对其进行处理和分析。这里介绍几种常见的图像处理工具。

卡尺工具与找线

卡尺工具可以帮助我们测量图像中物体的尺寸,而找线则是确定图像中线条的位置和方向。以下是使用 OpenCV 进行找线的示例代码:

import cv2 import numpy as np # 读取图像 image = cv2.imread('temp.jpg', 0) # 边缘检测 edges = cv2.Canny(image, 50, 150) # 霍夫变换找线 lines = cv2.HoughLinesP(edges, 1, np.pi/180, threshold=50, minLineLength=50, maxLineGap=10) # 绘制检测到的线 if lines is not None: for line in lines: x1, y1, x2, y2 = line[0] cv2.line(image, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.imshow('Lines Detected', image) cv2.waitKey(0) cv2.destroyAllWindows()

代码分析

首先,我们以灰度模式读取图像。然后使用 Canny 边缘检测算法提取图像的边缘。接着,通过霍夫变换(HoughLinesP)在边缘图像中检测直线。最后,将检测到的直线绘制在原始图像上并显示出来。

找圆与颜色检测

找圆可以帮助我们定位图像中的圆形物体,而颜色检测则可以根据颜色特征识别特定的物体。以下是一个简单的颜色检测示例代码:

import cv2 import numpy as np # 读取图像 image = cv2.imread('temp.jpg') # 转换到 HSV 颜色空间 hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 定义颜色范围(这里以红色为例) lower_red = np.array([0, 100, 100]) upper_red = np.array([10, 255, 255]) lower_red2 = np.array([160, 100, 100]) upper_red2 = np.array([180, 255, 255]) # 创建掩码 mask1 = cv2.inRange(hsv, lower_red, upper_red) mask2 = cv2.inRange(hsv, lower_red2, upper_red2) mask = cv2.bitwise_or(mask1, mask2) # 应用掩码 result = cv2.bitwise_and(image, image, mask=mask) cv2.imshow('Color Detection', result) cv2.waitKey(0) cv2.destroyAllWindows()

代码分析

我们先将图像从 BGR 颜色空间转换到 HSV 颜色空间,因为 HSV 更适合进行颜色检测。然后定义红色的颜色范围,创建两个掩码(因为红色在 HSV 空间中不连续),并将它们合并。最后,通过按位与操作将掩码应用到原始图像上,得到只包含红色部分的图像。

模板匹配与形状匹配

模板匹配和形状匹配是机器视觉中常用的目标识别方法。这里我们主要介绍基于形状的模板匹配,并且形状匹配算法已经封装成 DLL 直接调用。

基于形状的模板匹配界面

我们使用 Qt 来创建一个基于形状的模板匹配界面。以下是一个简单的 Qt 界面代码示例:

import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout import cv2 import numpy as np class TemplateMatchingApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 读取模板和图像 template = cv2.imread('template.jpg', 0) image = cv2.imread('image.jpg', 0) # 进行模板匹配 result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) top_left = max_loc h, w = template.shape # 在图像上绘制匹配结果 bottom_right = (top_left[0] + w, top_left[1] + h) cv2.rectangle(image, top_left, bottom_right, 255, 2) # 将 OpenCV 图像转换为 Qt 图像 height, width = image.shape bytesPerLine = width qImg = QImage(image.data, width, height, bytesPerLine, QImage.Format_Grayscale8) # 创建 QLabel 显示图像 label = QLabel(self) pixmap = QPixmap.fromImage(qImg) label.setPixmap(pixmap) # 设置布局 layout = QVBoxLayout() layout.addWidget(label) self.setLayout(layout) self.setWindowTitle('Template Matching') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = TemplateMatchingApp() sys.exit(app.exec_())

代码分析

在这个 Qt 界面代码中,我们首先读取模板图像和待匹配的图像。然后使用 OpenCV 的matchTemplate函数进行模板匹配,找到匹配度最高的位置。接着在原始图像上绘制矩形框标记匹配结果。最后,将 OpenCV 图像转换为 Qt 图像,并使用QLabel显示在界面上。

这些程序资料可是不错的学习资料,涵盖了从工业相机采集到各种图像处理和模板匹配的内容,大家可以根据自己的需求进行学习和扩展。希望大家在机器视觉的学习和实践中取得好成绩!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 18:42:29

上下文AI与搜索平台集成以扩展精准上下文工程

生成式AI革命已持续三年,但AI的有效性受到“上下文差距”的限制。企业拥有丰富的数据——分散在文档、数据库、Slack消息、ERP和CRM工具以及无数其他系统中——但对于缺乏员工专业知识和内部知识的AI模型来说,这些数据很大程度上难以理解。没有正确的上下…

作者头像 李华
网站建设 2026/4/29 4:40:48

【紧急通知】Open-AutoGLM上线首日必做:7项防火墙检查项速查清单

第一章:Open-AutoGLM防火墙安全总览Open-AutoGLM 是一款基于大语言模型驱动的智能网络安全防护系统,集成动态策略生成、异常流量识别与自动化响应机制。其核心防火墙模块通过实时分析网络行为模式,实现对潜在威胁的精准拦截与自适应防御。核心…

作者头像 李华
网站建设 2026/5/1 9:13:27

【Open-AutoGLM资源监控全攻略】:掌握高效资源占用分析的5大核心技术

第一章:Open-AutoGLM资源监控概述Open-AutoGLM 是一个面向大语言模型推理服务的自动化资源管理框架,其核心模块之一是资源监控系统。该系统负责实时采集 GPU 利用率、显存占用、请求延迟和并发连接数等关键指标,为动态扩缩容与负载调度提供数…

作者头像 李华
网站建设 2026/4/30 15:04:48

从HuggingFace一键拉取Linly-Talker模型,超详细步骤说明

从HuggingFace一键拉取Linly-Talker模型:技术拆解与实战指南 在虚拟主播、数字员工、AI讲解员日益普及的今天,如何用最低成本快速构建一个“能说会动”的数字人系统?答案或许就藏在一个名为 Linly-Talker 的开源项目中。 这个基于 HuggingFac…

作者头像 李华
网站建设 2026/4/30 19:56:55

Open-AutoGLM无法初始化?(三大隐藏原因+独家修复脚本分享)

第一章:Open-AutoGLM 安装失败修复在部署 Open-AutoGLM 时,用户常因环境依赖不兼容或网络问题导致安装失败。以下为常见故障及其解决方案,帮助开发者快速定位并解决问题。检查 Python 环境与版本兼容性 Open-AutoGLM 要求 Python 3.9 及以上版…

作者头像 李华
网站建设 2026/5/1 8:40:00

Linly-Talker在智慧园区的企业服务

Linly-Talker在智慧园区的企业服务 在智慧园区日益成为城市数字化转型核心载体的今天,企业对高效、智能、可扩展的服务系统提出了前所未有的要求。传统的客服模式依赖人力轮班,响应慢、成本高;宣传视频制作周期长、更新困难;新员工…

作者头像 李华