视觉自动化检测主要针对钢卷、瓷器、钢轨、铸件、锂电池壳、反光镜、瓶体、金属、木材生产线中产品表面划痕、表面缺陷及颜色检测。
热线电话:13655163735/025-66018619
首页 > 公司动态 > 行业新闻
零基础手把手教你制作视觉传感器:从电路搭建到图像识别
2026-05-08 01:10:54

大家好,今天我要和大家分享一个超有趣的DIY项目——自己动手做一个视觉传感器!别被“视觉传感器”这个词吓到,其实它就是个能“看”世界的小装置,就像给机器人装上一双眼睛。我们不用复杂的工业设备,只需要一些常见零件和开源软件,就能实现物体识别、颜色追踪等功能。这个项目特别适合想入门嵌入式视觉的爱好者,或者想给智能小车、家居设备加上视觉功能的创客们。

先说说我们需要准备什么:一个树莓派(我用的是树莓派4B,但3B+也行)、一个官方摄像头模块或USB摄像头、一块面包板、几个杜邦线、一个LED灯(用于指示)、一个10kΩ电阻,还有电源线。软件方面需要安装OpenCV、Python环境(建议用虚拟环境)。总成本控制在200元以内,比买成品传感器划算多了!

第一步,硬件连接。把摄像头插到树莓派的CSI接口上(注意金属触点朝内)或用USB口接摄像头。然后面包板上接LED:长脚接GPIO 17,短脚通过电阻接地。如果你用USB摄像头,记得先测试一下:在终端输入“libcamera-still -o test.jpg”,如果拍出照片就说明摄像头工作正常。

第二步,搭建Python环境。打开终端输入以下命令:

sudo apt update

sudo apt install python3-pip

pip install opencv-python

如果树莓派内存小,建议用“pip install opencv-contrib-python-headless”这个轻量版。安装后测试一下:在python终端输入"import cv2",没报错就成功了。

第三步,编写最简单的图像采集程序。新建一个Python文件,比如叫“cam_test.py”,写入以下代码:

import cv2

cap = cv2.VideoCapture(0)

while True:

ret, frame = cap.read()

cv2.imshow('Camera', frame)

if cv2.waitKey(1) & 0xFF == ord('q'):

break

cap.release()

cv2.destroyAllWindows()

运行后,你会看到一个实时视频窗口,按q键退出。恭喜,你的视觉传感器已经开始“看”世界了!

第四步,加入物体识别功能。我选择最简单的颜色识别:检测红色物体。在刚才的代码基础上,我们加入颜色转换和阈值处理:

import cv2

import numpy as np

cap = cv2.VideoCapture(0)

lower_red = np.array([0, 50, 50])

upper_red = np.array([10, 255, 255])

while True:

ret, frame = cap.read()

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

mask = cv2.inRange(hsv, lower_red, upper_red)

res = cv2.bitwise_and(frame, frame, mask=mask)

cv2.imshow('Original', frame)

cv2.imshow('Red Detection', res)

if cv2.waitKey(1) & 0xFF == ord('q'):

break

cap.release()

cv2.destroyAllWindows()

当你把红色物体放在摄像头前,屏幕上会高亮显示红色区域。如果你想识别其他颜色,只需要调整lower_upper的数值。

第五步,让视觉传感器输出结果。比如当检测到红色时,让LED灯亮起。我们把LED控制代码整合进来:

import RPi.GPIO as GPIO

import cv2

import numpy as np

GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.OUT)

cap = cv2.VideoCapture(0)

lower_red = np.array([0, 50, 50])

upper_red = np.array([10, 255, 255])

while True:

ret, frame = cap.read()

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

mask = cv2.inRange(hsv, lower_red, upper_red)

red_pixels = cv2.countNonZero(mask)

if red_pixels > 1000:

GPIO.output(17, GPIO.HIGH)

else:

GPIO.output(17, GPIO.LOW)

cv2.imshow('Frame', frame)

if cv2.waitKey(1) & 0xFF == ord('q'):

break

GPIO.cleanup()

cap.release()

cv2.destroyAllWindows()

当你的视觉传感器“看到”红色物体时,LED灯就会亮起。你可以把这个传感器用在智能垃圾桶、自动窗帘等项目中。