K210----openMV连体学习---04.图像的相关处理

目录

前言:

一、颜色二值化滤波:

二、锐化滤波:

三、图像翻转:


前言:

本人所用为01 studio的pyAi-K210和pyAI-OpenMV4,本人在学习完K210后,学习openMV时发现很多实验K210和openMV可以一起学习,所以写下此篇分享,本人基本都是个人笔记,非常希望有大佬提出错误和改进之处,但大佬轻喷哈!!!

----------------------------------------------------------我是分割线--------------------------------------------------------

前面我们学习了,'03.特征检测' 但是会发现在检测过程中图形会有千奇百怪的问题出现,于是就会想对拍摄到的图像进行提取,而接下来我们将学习,对图像的锐化,二值化等等。

一、颜色二值化滤波:

图形的二值化滤波是指将灰度图像转化为二值图像(只有黑和白两个灰度)的图像处理技术。

设置一个门限值,大于该值的灰度像素变为白色,小于该值的灰度像素变为黑色。常用的二值化方法有固定阈值法、自适应阈值法等。
 

构造函数

image.binary(thresholds,invert=False[,zerp=Falese[,mask=None[,to_bitmap=False[,copy=False]]]]])

        【thresholds】必须是元组列表。 (lo, hi) 定义你想追踪的颜色范围。对于灰 度图像,每个元组需要包含两个值:最小灰度值和最大灰度值。

        【invert】如果为 True,则 0 1(黑 白)反转;默认 False 不反转。

        【zero】是否将阈值之间的像素变为0(黑色)。默认False,阈值之间为原始数据。

        【mask】掩码图像,只对掩码内非零位置的像素进行阈值化。默认None表示处理整幅图像。

        【to_bitmap】是否转换为位图格式,默认False

        【copy】是否复制图像而不是在原图上操作。默认False,即直接在输入图像上修改。

使用方法直接调用该函数。

官方例程如下:

'''
导入 sensor 等相关模块
初始化和配置 sensor 模块
实时拍摄采集图像
二值化滤波处理
'''
import sensor, image, time
sensor.reset()
sensor.set_framesize(sensor.QVGA)
sensor.set_pixformat(sensor.RGB565)
sensor.skip_frames(time = 2000)
clock = time.clock()
# 可以使用 工具-> 机器视觉 -> 阈值编辑器 来调整阈值.
red_threshold = (0,100, 0,127, 0,127) # L A B
green_threshold = (0,100, -128,0, 0,127) # L A B
blue_threshold = (0,100, -128,127, -128,0) # L A B
while(True):
    # Test red threshold
    for i in range(100):
        clock.tick()
        img = sensor.snapshot()
        img.binary([red_threshold])
        print(clock.fps())
 
'''
    # Test green threshold
    for i in range(100):
        clock.tick()
        img = sensor.snapshot()
        img.binary([green_threshold])
        print(clock.fps())

    # Test blue threshold
    for i in range(100):
        clock.tick()
        img = sensor.snapshot()
        img.binary([blue_threshold])
        print(clock.fps())

    # Test not red threshold
    for i in range(100):
        clock.tick()
        img = sensor.snapshot()
        img.binary([red_threshold], invert = 1)
    print(clock.fps())

    # Test not green threshold
    for i in range(100):
        clock.tick()
        img = sensor.snapshot()
        img.binary([green_threshold], invert = 1)
        print(clock.fps())

    # Test not blue threshold
    for i in range(100):
        clock.tick()
        img = sensor.snapshot()
        img.binary([blue_threshold], invert = 1)
        print(clock.fps())
'''


# todo 以上代码对 K210和OpenMV4 均适用

二、锐化滤波:

构造函数

image.laplacian(size[,sharpen=False[,mul[,add=0[,threshold=False[,offset=0[,mask=None]]]]]]])

        【size】内核大小。1(3×3),2(5×5))或者更高值;

        【sharpen】如果为Ture,则为锐化图形。

        【mul】与原图混合时的乘数,默认为1

        【add】与原图混合时的加数,默认为0。

        【threshold】是否对拉普拉斯图像进行二值化,默认不进行。

        【offset】二值化时阈值偏移量,与threshold一起使用。

        【mask】掩码图像,只对掩码内非零位置进行滤波。默认None表示处理整幅图像。

使用方法直接调用函数

官方代码如下:

'''
导入 sensor 等相关模块
初始化和配置 sensor 模块
实时拍摄采集图像
锐化滤波处理
'''

import sensor, image, time
#摄像头初始化
sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.GRAYSCALE) # or sensor.RGB565
sensor.set_framesize(sensor.QQVGA) # or sensor.QVGA (or others)
sensor.skip_frames(time = 2000) # Let new settings take affect.
clock = time.clock() # Tracks FPS.
while(True):
    clock.tick() # Track elapsed milliseconds between snapshots().
    img = sensor.snapshot() # Take a picture and return the image.
    # 运行拉普拉斯内核.
    img.laplacian(1, sharpen=True)
    print(clock.fps()) #打印 FPS



# todo 以上代码 OpenMV4和K210 均可使用

三、图像翻转:

构造函数

image.replace(image[,hmirror=False[,vflip=False[,transpose=False[.mask=None]]]])

        【image】要操作的图形对象;

        【hmirror】如果为Ture,则水平镜像转替换图形。

        【vflip】如果为Ture,则垂直翻转替换图形。

        【transpose】如果为 True,则沿对角线翻转图像。

使用方法

直接调用该函数。

例:

vflip=False, hmirror=False, transpose=False -> 旋转 0°

vflip=True, hmirror=False, transpose=True -> 旋转 90°

vflip=True, hmirror=True, transpose=False -> 旋转 180°

vflip=False, hmirror=True, transpose=True -> 旋转 270°

官方代码如下:

'''
导入 sensor 等相关模块
初始化和配置 sensor 模块
实时拍摄采集图像
将图像进行各种翻转
'''
import sensor, image, time, pyb
#摄像头初始化
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()
mills = pyb.millis()
counter = 0
while(True):
    clock.tick()
    img = sensor.snapshot().replace(vflip=(counter//2)%2,
hmirror=(counter//4)%2,transpose=(counter//8)%2)
    # 也可以手动修改参数观察图像变化情况。
    #img = sensor.snapshot().replace(vflip=False,hmirror=False, transpose=False)
    if (pyb.millis() > (mills + 1000)):
        mills = pyb.millis()
        counter += 1
    print(clock.fps())




# todo 以上代码对 K210和OpenMV4 均适用

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广寒学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值