购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2-6 像素的BGR值

鼠标光标在画图工具打开的图像上移动,左下角可以看到鼠标光标的坐标,如下图所示。

上图右下角可以看到图像大小是 342 × 345 像素,也就是说 x 轴大小是342像素,在OpenCV的坐标概念中, x 轴坐标是0~341; y 轴大小是345像素,在OpenCV的坐标概念中, y 轴坐标是0~344。

有了上述概念,这一节将介绍读取与修改特定像素坐标BGR值的方法。

2-6-1 读取特定灰度图像像素坐标的BGR值

参考ch2_1.py第4行,使用下列指令读取图像。

     img = cv2.imread(“jk.jpg”, cv2.IMREAD_GRAYSCALE)

假设想获得(169, 118)的BGR值(这是采用OpenCV坐标概念),可以使用以下指令。

     px = img[169, 118]

上述用灰度图像读取时,返回的是Numpy模块的uint8数据类型。

程序实例 ch2_3.py: 列出灰度图像OpenCV坐标(169, 118)的BGR值和此值的数据类型。

执行结果

2-6-2 读取特定彩色图像像素坐标的BGR值

参考ch2_2.py第4行,使用如下指令读取图像。

     img = cv2.imread(“jk.jpg”)

假设想获得(169, 118)的BGR值(这是采用OpenCV坐标概念),可以使用如下指令。

     px = img[169, 118]

上述用彩色图像读取时,返回的是Numpy模块的 数组数据类型 (numpy.ndarray)。

程序实例 ch2_4.py: 列出彩色图像OpenCV坐标(169, 118)的BGR值和此值的数据类型。

执行结果 BGR通道的值分别是45、112、191。

除了上述方法,也可以一次获得一个通道的值,方法如下。

     blue = img[pt_y, pt_x, 0]      # B通道值
     green = img[pt_y, pt_x, 1]     # G通道值
     red = img[pt_y, pt_x, 2]       # R通道值

程序实例 ch2_5.py: 列出OpenCV坐标(169, 118)的BGR通道各个值。

执行结果

2-6-3 修改特定图像像素坐标的BGR值

前面所述实例可以使用下列方式获得指定图像像素的BGR值。

     px = img[169, 118]

假设需要更改指定图像像素的值,可以使用如下指令设定此值。

     px = [blue, green, red]

程序实例 ch2_6.py: 将OpenCV坐标(169, 118)的BGR通道值设为[255, 255, 255](白色效果)。

执行结果

上述实例只修改了单一像素,读者不容易看出来,下面实例笔者将修改一个区域,读者可以做一下比较。

程序实例 ch2_7.py: 将jk.jpg图像右下方50×50像素区间设定为白色。

执行结果

习题

请调整ch2_7.py,改为下方显示黄色横条。 1ZD0J4WdcScEhZs4XBDN9N02jZJNxukbdN+omiS3IsEo4zAtgh6xOlYX1lZZrWOM

点击中间区域
呼出菜单
上一章
目录
下一章
×