温馨提示,本文的代码是采用多种方法集成的最优方法
Hello,亲爱的读者们!在这个充满挑战与创新的时代,我们总是不断探索新的技术边界。今天,我非常激动地与大家分享我最近在OpenMV4领域的一次有趣尝试。
作为一名热衷于机器视觉和智能识别的开发者,我一直在寻找能够提升项目性能和准确性的新工具和方法。OpenMV4以其强大的图像处理能力和灵活的编程接口,成为了我探索之旅中的得力助手。
在这篇博客中,我将带领大家一起走进基于色块识别的图形、颜色以及坐标识别的世界。通过一段精心编写的代码,我们可以实现对特定颜色和形状的物体进行快速而准确的识别,而且据我的实际测试,其准确率能够达到90%以上!
不过,请注意,为了获得最佳识别效果,我们需要确保环境光线适宜,并且物体与摄像头保持适当的距离。如果遇到识别效果不佳的情况,您还可以根据实际情况调整代码中的颜色阈值和物体距离参数。
不多说了,让我们直接进入正题,看看这段神奇的代码是如何工作的吧!(友情提示:为了运行这段代码,您需要使用OpenMV IDE。
一、代码初始化:
import sensor, image, time
thresholds = [(45, 100, -41, 127, -10, 120) ]# black
sensor.reset() #初始化设置
sensor.set_pixformat(sensor.RGB565) #设置为彩色
sensor.set_framesize(sensor.QVGA) #设置清晰度
sensor.set_windowing(150,200)
sensor.skip_frames(time = 2000) #跳过前2000ms的图像
sensor.set_auto_gain(False) # must be turned off for color tracking
sensor.set_auto_whitebal(False) # must be turned off for color tracking
clock = time.clock() #创建一个clock便于计算FPS,看看到底卡不卡
sensor.set_auto_gain(False) # 关闭自动自动增益。默认开启的。
sensor.set_auto_whitebal(False) #关闭白平衡。
二、颜色部分:
for code in img.find_qrcodes(): # 进行二维码检测
img.draw_rectangle(code.rect(), color = (255, 0, 0))
print(code.payload())
-
for code in img.find_qrcodes():
:- 这是一个for循环,用于遍历
img.find_qrcodes()
函数返回的二维码对象列表。img.find_qrcodes
是OpenMV用来检测图像中二维码的函数。
- 这是一个for循环,用于遍历
-
img.draw_rectangle(code.rect(), color = (255, 0, 0))
:- 这行代码调用
img.draw_rectangle
方法,在图像上绘制一个矩形,表示检测到的二维码的位置。参数说明如下:code.rect()
: 返回二维码的边界框,即二维码在图像中的位置和大小。color = (255, 0, 0)
: 绘制矩形的颜色,这里使用的是红色(在RGB颜色模式中,红色由(255, 0, 0)表示)。
- 这行代码调用
-
print(code.payload())
:- 这行代码调用
code.payload()
方法,打印出检测到的二维码中包含的数据(即二维码的payload)。payload
是二维码编码的信息,可以是文本、URL或其他数据。
- 这行代码调用
三、总体代码
import sensor, image, time
thresholds = [(45, 100, -41, 127, -10, 120) ]# black
sensor.reset() #初始化设置
sensor.set_pixformat(sensor.RGB565) #设置为彩色
sensor.set_framesize(sensor.QVGA) #设置清晰度
sensor.set_windowing(150,200)
sensor.skip_frames(time = 2000) #跳过前2000ms的图像
sensor.set_auto_gain(False) # must be turned off for color tracking
sensor.set_auto_whitebal(False) # must be turned off for color tracking
clock = time.clock() #创建一个clock便于计算FPS,看看到底卡不卡
sensor.set_auto_gain(False) # 关闭自动自动增益。默认开启的。
sensor.set_auto_whitebal(False) #关闭白平衡。
while(True):
clock.tick()
img = sensor.snapshot()#可以畸形也可以不用
for blob in img.find_blobs(thresholds, area_threshold = 200, pixels_threshold=200):
for code in img.find_qrcodes(): # 进行二维码检测
img.draw_rectangle(code.rect(), color = (255, 0, 0))
print(code.payload())