OV7725是一款采用STM32H750VBT6的摄像头,可通过OpenmvIDE使用Python语言来编程,实现摄像头的功能。
放图:
电赛用E题用了K210,弄的我苦不堪言,后来发现了这个,但是到货已经是封箱前几个小时了。只能留下来比赛结束后再去学这个。想看看这款OV与K210比怎么样。
话不多说。
要实现矩形框的检测,就要使用官方提供的img.find_rects()函数就是在摄像头画面中寻找矩形框。然后用画线的方法来框住边缘。
还可以直接用此行代码添加到if循环里代替那四行的画线的代码。(其实我是有点强迫症的所以必须要让矩形框紧紧抱住她的边缘美观一点其实)。
img.draw_rectangle(r.rect(), color = (255, 0, 0))
先让你们感受一下不死死抱住她是什么样子。
你们自行选择哈。
import sensor, image, time
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA2)
sensor.skip_frames(time=2000)
clock = time.clock()
#定义四个列表用于存储矩形四个点的横纵坐标#
A = (0, 0)
B = (0, 0)
C = (0, 0)
D = (0, 0)
while (True):
clock.tick()
img = sensor.snapshot()
# 下面的`threshold`应设置为足够高的值,以滤除在图像中检测到的具有
# 低边缘幅度的噪声矩形。最适用与背景形成鲜明对比的矩形
for r in img.find_rects(threshold=10000):
if r.w() > 40 and r.h() > 40:
#img.draw_rectangle(r.rect(), color = (255, 0, 0))
#返回一个由矩形对象的四个角组成的四个元组(x,y)的列表。四个角通常是按照从左上角开始沿
#顺时针顺序返回的。
corner = r.corners()
A = (corner[0][0], corner[0][1])
B = (corner[1][0], corner[1][1])
C = (corner[2][0], corner[2][1])
D = (corner[3][0], corner[3][1])
break
#img.draw_circle(圆心的x,圆心的y,颜色,粗细,关闭填充)
img.draw_circle(A[0], A[1], 5, color=(0, 0, 255), thickness=2, fill=False)
img.draw_circle(B[0], B[1], 5, color=(0, 0, 255), thickness=2, fill=False)
img.draw_circle(C[0], C[1], 5, color=(0, 0, 255), thickness=2, fill=False)
img.draw_circle(D[0], D[1], 5, color=(0, 0, 255), thickness=2, fill=False)
#框出矩形的边缘#
#img.draw_line(起始点x,起始点y,终止点x,终止点y,颜色,画线的粗细)
img.draw_line(A[0],A[1],B[0],B[1],color=(0,255,0),thickness=1)
img.draw_line(B[0],B[1],C[0],C[1],color=(0,255,0),thickness=1)
img.draw_line(C[0],C[1],D[0],D[1],color=(0,255,0),thickness=1)
img.draw_line(D[0],D[1],A[0],A[1],color=(0,255,0),thickness=1)
# 打印帧率
print(clock.fps())
给烙铁们看看效果哈。
好咯,这是我第一次作品,可能会有错误的地方,如果有错的地方,欢迎大家在评论区指出,一定虚心改正!