本节将先用实例建立彩色图像,然后列出彩色图像的数组值,再解释数组值的意义。
程序实例 ch6_3.py: 建立3组2×3的彩色图像,第一组彩色图像数组是蓝色,第二组彩色图像数组是绿色,第三组彩色图像数组是红色`,列出数组内容。
执行结果 每个图像皆是三维数组。
下面用下图搭配上述执行结果做图示说明。
程序实例 ch6_4.py: 建立蓝色、绿色、红色的窗口,然后解释彩色数组内容的意义。
执行结果
这个实例比前一个实例复杂,不过概念是相同的,必须展开Python Shell窗口的 Squeezed text ,双击第1、第2和第3项后可以得到下列结果。
程序实例 ch6_5.py: 自创一个2×3×3的彩色图像数组,先打印此彩色图像数组。然后打印[0,1]像素点的BGR内容。接着第12行修改[0,1]的内容为[50,100,150],最后再打印一次此图像数组,验证修改结果。
执行结果
上述是一次修改BGR通道的值,下列实例则是修订单一通道的值。
程序实例 ch6_6.py: 自创一个2×3×3的彩色图像数组,先打印此彩色图像数组,然后打印[0,1,2]像素点的通道值。接着第12行修改[0,1,2]的内容为50,最后再打印一次此图像数组,验证修改结果。
执行结果
和前面小节内容一样,可以一次更改一个通道值内容,可以参考下列实例第14~17行。也可以一次更改一个像素点的BGR通道值,可以参考下列实例第10~12行,或第19~21行。
程序实例 ch6_7.py: 读取彩色图像,然后编辑图像,在编辑过程会列出长条左上角修改前与修改后的像素值。
执行结果
上述实例使用传统简单的方法编辑图像区域内容,其实对于Python程序设计师来说,那是没有效率的方法,可以用简单方式直接取代,例如,第10~12行可以用下列代码取代。
img[115:210,110:210] = [255, 0, 255]
程序实例 ch6_7_1.py: 重新设计ch6_7.py,第10~12行使用单行代替循环。
执行结果 与ch6_7.py相同。