openmv代码整合 ——常用操作
[^By LCB]: by LCB
零、Import
import sensor, image, time
from pyb import UART
import ustruct
import json
from image import SEARCH_EX, SEARCH_DS
一、相机初始化
def sensorInit():
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_auto_gain(False)
sensor.set_framesize(sensor.QVGA)
sensor.set_auto_exposure(False)#(True, 500)#在这里调节曝光度,调节完可以比较清晰地看清激光点
sensor.set_auto_whitebal(False) # turn this off.
sensor.set_auto_gain(False) # 关闭增益(色块识别时必须要关)
Blob的性质与操作
Blob查找
返回值:包括每个色块的色块对象的列表,blob是一个对象
roil_board = (19,24,207,193)
THRESHOLD_RED_CIRCLE_IN_WHITE_GREEN_BLACK_AUTO = (22, 100, 12, 127, -3, 127)
blobPoints=img.find_blobs([THRESHOLD_RED_CIRCLE_IN_WHITE_GREEN_BLACK_AUTO], roi=roil_board,merge =True)
找到最大的Blob
#找到最大的色块
def find_max(blobs):
max_size=0
for blob in blobs:
if (blob[2]*blob[3] > max_size):
max_blob=blob
max_size = blob[2]*blob[3]
return max_blob
max_blob=find_max(blobPoint)
Openmv 硬件
串口通信
from pyb import UART
uart3 = UART(3,115200,bits=8, parity=None, stop=1, timeout_char = 1000)
uart1=UART(1,115200)
uart1.init(115200, bits=8, parity=None, stop=1) #8位数据位,无校验位,1位停止
def Sending_Mission_1_data(data1,data2,data3,data4):
global uart3;
data = ustruct.pack("<bbbbb",
0xAA,data1,data2,data3,data4
)
uart3.write(data); #必须要传入一个字节数组
GPIO读取
# 先介绍一下里面的 pyb 包
# 这个包存放的都是一些外设的模块,如 IO口,,UART,Timer,PWM,ADC,DAC,IIC,SPI,CAN,中断
# 先介绍IO口的控制
# 可以直接导入这个包,仅仅是调用这个包,使用里面的模块时,必须带上包名
import pyb
# 我们调用的都是这包里面的模块,使用方法:使用前必须带上包的名字 pyb
P7_Out = pyb.Pin('P7', Pin.OUT_PP) # P7设置成推挽输出
P7_Out = pyb.Pin('P7', Pin.OUT_OD) # P7设置成开漏输出
P7_In = pyb.Pin('P7', Pin.IN, Pin.PULL_UP) # P7,上拉入
P7_In = pyb.Pin('P7', Pin.IN, Pin.PULL_DOWN) # P7,下拉输入
P7_In = pyb.Pin('P7', Pin.IN, Pin.PULL_NONE) # P7,浮空输入
# 控制引脚的状态
P7_Out.high() # 输出高电平
P7_Out.low() # 输出低电平
# 获取引脚的状态
P7_State = P7_In.value() # 获取P7的引脚状态,0 or 1
外部中断
4. GPIO引脚 — MicroPython 1.9.2 文档 (singtown.com)
图形绘制
#绘制直线
img.draw_line(corner_points[0][0], corner_points[0][1], corner_points[1][0], corner_points[1][1], color=(255,0,255), thickness=1)
#绘制矩形
img.draw_rectangle((SquareXarray ,SquareYarray ,SquareWidth,SquareHeight),color=(0,0,255))
#绘制十字
img.draw_cross(max_blob.cx(), max_blob.cy(),color=(0, 0, 255))
#绘制文字
img.draw_string(maxcenter_blob.cx(), maxcenter_blob.cy(), "center", color=(0, 0, 255))