opencv入门:图像处理基本操作,图像的基本表示方法, 像素处理,使用numpy.array 访问像素,感兴趣区域 ROI

图像处理基本操作

retval=cv2.imread(filename, [flags])

flags读取标记,控制读取文件的类型,

在这里插入图片描述

cv2.imread() 支持的格式,,长长见识
在这里插入图片描述

import cv2
lena=cv2.imread('123.jpg') # 读取一份图像
print(lena)          # 打印读取的图像数据,输出图像的部分像素值

[[[255 255 255]
  [255 255 255]
  [255 255 255]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]
  ...
cv2.namedWindow('lesson')   # 创建指定名称的窗口
cv2.imshow('lesson',lena)          # imshow(窗口名称, 图像) 显示图像
cv2.waitKey(0)  

cv2.imshow('1',lena)         # 不使用namewidow 也一样的。。。就是自动建立窗口
cv2.waitKey(0)          # 让程序等待,毫秒,0是一直等

cv2.imwrite('lalal.jpg', lena)   # 保持图片


cv2.waitKey([delay])   
# 可以用来等待按键,当用户按下键盘,执行获取返回值,没有按下就是-1,否则返回按键的ASCII码
# delay为负数或0 就一直等待,默认0

img=cv2.imread('5.jpg')
cv2.imshow('1',img)
key=cv2.waitKey()                 # 判断按键,然后使用不同窗口显示图像
if key==ord('a'):
    cv2.imshow('a',img)           # 这里如果设置了delay ,就在这段时间等待按键,直到超时
    cv2.waitKey()
elif key==ord('b'):
    cv2.imshow('b',img)
    cv2.waitKey()


key=cv2.waitKey()                    # 也可以这样
if key!= -1:
    print('触发了按键')


cv2.destroyWindows('1')                 # 销毁指定窗口
cv2.destroyAllWindows()             # 销毁所有窗口,一个状态改变就全销毁

img=cv2.imread('5.jpg')
cv2.imshow('1',img)
cv2.waitKey()
cv2.destroyWindow('1')               # 在按下按键后变成新的状态,窗口就自动销毁

图像的基本表示方法

  1. 二值图像

就是只包含黑色和白色的图像,通过一个矩阵来表示和处理图像。计算机处理是,划分成像素点,白的就是1, 黑的就是0.。
在这里插入图片描述
2. 灰度图像

将灰度处理为256个灰度级,使用[0,255] 来表示,255表示纯白,0就是纯黑,其他就是不同灰度,256个灰度级正好是一个字节
在这里插入图片描述
使用上述方法就可以表示灰度图像
在这里插入图片描述
也可以使用8位二进制来表示二值图,255就是白色,0就是黑色,没有其他灰度级

  1. 彩色图像

色彩就是由红绿蓝三色构成。主波长,纯度,明度,色调,饱和度,亮度等使用不同方式表示颜色的模式称为色彩空间,颜色空间或颜色模式

虽然不同的色彩空间由不同的表示方式,但是各种色彩空间之间可以根据需要按公式进行转换。这里只是基础的RGB色彩空间

RGB色彩空间中,有三个通道,每个色彩通道的范围都是0-255, 使用这三个色彩通道的组合表示颜色。也就是混合数量不同来展示不同颜色,256×256×256=16 777 216 种。。。。
在这里插入图片描述
也就是说,一个彩色图像,可以看作三个灰度图像的形式,每一部分使用三个来表示
在这里插入图片描述
一般情况下,通道顺序是RGB ,在opencv种,是 BGR。 在图像处理过程种,可以转换图形的通道顺序,对不同色彩空间的图像进行类型转换,例如将灰度转换成二值图,彩图转换成灰度

像素处理

像素的图像构成的基本单位,像素处理时图像处理的基本操作,可以通过位置索引的形式对图像内的元素进行访问,处理

  1. 二值图及灰度图

opencv 中,最小的数据类型时无符号8位数,所以实际上没有二值图这种数据类型,二值图通常时通过处理得到的。可以将二值图理解为特殊的灰度图。
图像就是numpy的数组,一个灰度图就是一个二维数组,可以访问其中的像素值。

至于坐标嘛,,x轴向下,y 轴向右

在这里插入图片描述

  1. 彩色图像

RGB模式的彩色图子啊读入opencv 内进行处理,会按照行方向依次读取该RGB的B G R通道,并将像素点以行为单位保存在ndarray的列中,
在这里插入图片描述
例如:使用image[0,0,0] 访问图像B通道第零行,第0列 上的像素点。三个索引分别是 [行, 列, 通道] 。image[x,y]是获得三个通道的值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用numpy.array 访问像素

numpy.array 提供了item() and itemset() 来访问修改像素值,这两个函数的效率更高。

  1. 二值图和灰度图

随机生成个图像,item(x,y) 获取数值,itemset((x,y),value) 设置值
在这里插入图片描述
2. 彩色图像

使用item itemset 就要加上通道信息了。item(行,列,通道) itemset(三元组索引值,新值)

在这里插入图片描述

感兴趣区域 ROI

在图像处理的过程中,我们会对某一部分感兴趣,这就是感兴趣区域,设定感兴趣区域后,可以对该区域进行整体操作。比如把这块区域复制到另一个图像中。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值