学习Openmv的第六天——关于图像的较高级操作

在此之前,作者需要提醒,本节与开头的图像操作不尽相同,本节的操作主要以numpy模块为主,

由于大多数示例都是单行代码,因此示例将在Python终端中显示 。

1、访问和修改像素值

  • 先加载彩色图像

    >>> import numpy as np
    >>> import cv2 as cv
    >>> img = cv.imread('messi5.jpg')
    
  • 你可以通过行和列坐标来访问像素值。对于 BGR 图像,它返回一个由蓝色、绿色和红色值组成的数组。对于灰度图像,只返回相应的灰度

    >>> px = img[100,100]
    >>> print( px )
    
    # 仅访问红色像素
    red = img[0,100,100]
    print(red)
    
  • 你可以用相同的方式修改像素值

    >>> img[100,100] = [255,255,255]
    >>> print( img[100,100] )
    
  • 更好的像素访问和编辑方法:

    注意:对于单个像素访问,Numpy数组方法array.item()和array.itemset())被认为更好,但是它们始终返回标量。如果要访问所有B,
    G,R值,则需要分别调用所有的array.item()

    # 访问 RED 值
    >>> img.item(10,10,2)
    
    # 修改 RED 值
    >>> img.itemset((10,10,2),100)
    >>> img.item(10,10,2)
    

2、访问图像属性

图像属性包括:行数,列数和通道数,图像数据类型,像素数 and so on ^_^

  • 图像的形状可通过 img.shape 访问,它返回行,列和通道数的元组(若图像是彩色的):

    >>> print(img.shape)
    

    注意:注意 如果图像是灰度的,则返回的元组仅包含行数和列数,因此这是检查加载的图像是灰度还是彩色的好方法。

  • 像素总数可通过访问 img.size :

    print(img.size)
    
  • 图像数据类型通过 img.dtype 获得:

    print(img.dtype)
    

3、图像感兴趣区域ROI

使用Numpy索引获得ROI,我要选择球并将其复制到图像中的另一个区域:

>>> ball = img[280:340, 330:390]
>>> img[273:333, 100:160] = ball

4、拆分和合并图像通道

有时你需要分别处理图像的B,G,R通道。在这种情况下,你需要将BGR图像拆分为单个通道。在其他情况下,你可能需要将这些单独的频道加入BGR图片。你可以通过以下方式简单地做到这一点:

>>> b,g,r = cv.split(img) 
>>> img = cv.merge((b,g,r))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值