猪百岁 发表于 2021-3-27 17:13:32

【新手基础教程】 传统算法之图像处理

本帖最后由 猪百岁 于 2021-3-27 17:13 编辑

# 传统算法之图像处理

## MaixPy 查找色块

找出图片中指定颜色所有色块

### 1. 使用方法
MaixPy 已经在 image 模块中实现有查找色块方法,需要使用非 minimum 固件版本。

-   从摄像头获取图片

```
import image, sensor
img=sensor.snapshot()

```

-   从图片中查找所有色块对象(image.blob)列表, 传入的颜色阈值参数按照 LAB 格式(l_lo,l_hi,a_lo,a_hi,b_lo,b_hi)

```
green_threshold   = (0,   80,-70,   -10,   -0,   30)
blobs = img.find_blobs()

```

-   操作色块对象

根据自己的需求操作色块对象, 例如将色块对象在图像中用矩形框标识出来

```
tmp=img.draw_rectangle(b)

```

详细 API 介绍请查看(https://cn.maixpy.sipeed.com/zh/api_reference/machine_vision/image/image.html).

### 2. 例程
找绿色色块

```
import sensor
import image
import lcd
import time
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
green_threshold   = (0,   80,-70,   -10,   -0,   30)
while True:
    img=sensor.snapshot()
    blobs = img.find_blobs()
    if blobs:
      for b in blobs:
            tmp=img.draw_rectangle(b)
            tmp=img.draw_cross(b, b)
            c=img.get_pixel(b, b)
    lcd.display(img)
```

## MaixPy 查找二维码

从图片中识别二维码,常见的二维码为 QR Code,QR 全称 Quick Response,它比传统的条形码(Bar Code)能存更多的信息,也能表示更多的数据类型.

### 1. 使用方法

image 模块中已经实现有查找二维码方法,需要使用非 minimum 固件版本,需要准备一个二维码,可以用[草料二维码](https://cli.im/)生成你想要的内容.

-   从摄像头获取图片,将摄像头对准二维码

```
import image, sensor
img=sensor.snapshot()

```

-   从图片中查找所有二维码对象(image.qrcode)列表

```
res = img.find_qrcodes()

```

-   操作二维码对象

例如打印信息

```
print(res.payload())

```

详细 API 介绍请查看(https://cn.maixpy.sipeed.com/zh/api_reference/machine_vision/image/image.html).

### 2. 例程

识别二维码,如果识别不到二维码,请尝试更改`sensor.vflip()`函数参数。

```
import sensor
import image
import lcd
import time

clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1)
sensor.run(1)
sensor.skip_frames(30)
while True:
    clock.tick()
    img = sensor.snapshot()
    res = img.find_qrcodes()
    fps =clock.fps()
    if len(res) > 0:
      img.draw_string(2, 2, res.payload(), color=(0,128,0), scale=2)
      print(res.payload())
    lcd.display(img)
```

empty 发表于 2021-3-28 19:43:18

有东西的{:5_116:}
页: [1]
查看完整版本: 【新手基础教程】 传统算法之图像处理