python的opencv包--像素

感谢 杨秀璋的专栏,本文参考了 Eastmount 的 文章 https://blog.csdn.net/Eastmount/article/details/81748802

我的运行环境:

我的python:3.7.4

我的操作系统:win10

我的opencv库:4.1.1.26

用windows自带的画图软件,准备了三幅图:图幅均为长200像素,高100像素。

图1:填充的颜色为红=0,绿=0,蓝=255;文件名:B200x100.bmp 

图2:填充的颜色为红=0,绿=255,蓝=0;文件名:G200x100.bmp 

图3:填充的颜色为红=0,绿=0,蓝=255;文件名:R200x100.bmp

实验目的:

内存中图像的颜色是怎么表示的?

实验步骤:

说明:

1. 在windows的cmd窗口下交互执行python命令。

2. 加载cv2模块。前提:安装了opencv库。安装方法

3. 加载当前目录中的指定的图像文件。

4. 读取图像中的任意一点像素。因是纯色图案,各点像素值应该相同。我取了坐标(50,50)的像素。

5. 像素值=(255,0,0)。

6. 结果表明,像素值用了三个通道表示,其中第一个通道为蓝色通道

7. 结果表明,图像i的(x,y)像素的蓝色通道值可表示为:i[y,x,0]

继续实验:

 说明:

1. 加载绿色图像。

2. 坐标(50,50)的像素值=(0,255,0)

3. 结果表明:第二个通道为绿色通道,图像i的(x,y)像素的绿色通道值可表示为:i[y,x,1]

 继续实验:

说明:

第三个通道的红色通道, 图像i的(x,y)像素的红色通道值可表示为:i[y,x,2]

图像i的点坐标(x,y)处的像素,到底表示为i[x,y]还是i[y,x]?

继续实验:

说明:

1. 加载红色图像。

2. 将图像的10<=m<=20, 30<=n<=50范围内的像素设置成黑色(BGR通道均为0)

3. 将图像保存为RedBlack.bmp文件。

4. 用windows自带的画图软件打开RedBlack.bmp

 结果表明,m表示行,也就是y坐标的值;n表示列,也就是x坐标的值。原点为左上的起点。

可用i[y,x]表示图像i的(x,y)点的像素

可用i[y1:y2,x1:x2]表示图像i的(x1,y1)至(x2,y2)范围内的像素

认识i[k]

看起来i=cv2.imread()的i就代表了像素,那么R200x100.bmp有多少像素呢?输入len(i)试试:

怎么就100个像素?应该200*100=20000呀?

用画图打开R200x100.bmp,将属性宽200像素改为20像素,另存为R20x100.bmp

 继续实验:

还是100?好像有点懂了。 

用画图打开R20x100.bmp,将属性高100像素改为30像素,另存为R20x30.bmp

继续实验:

变成30了。

 这里,img的成员数就是图像的行数。剥开外壳看看:

说明:

img由行组成:img[行0,行1,...行m]

行由像素组成:行[列0,列1,...列n]

像素由通道值组成: 行列[蓝,绿,红]

说明:第0行由20个像素 (20列)组成,每个像素都是红色,数据类型为无符号8位数(256色)--这是我用画图存盘时选择的。

 

说明:第0行第5列的像素是256色中的红色。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值