第05&06课 修改多个像素值

吃可爱长大的小学妹 提交于 2020-01-30 09:57:19
**学科:**人工智能 年级: 七年级上
课题: 第05&06课 修改多个像素值 **课时数:**1

教学目标:

1.学会对灰度图像中多个像素的颜色逐个进行修改。

2.学会利用for循环对灰度图像中某一行或者列(几行或者几列)多个连续像素的颜色进行修改。

3.学会利用for循环对灰度图像中某个(或者几个)区域的像素颜色进行修改。

4.学会将图像中某一区域修改为彩色。

教学重点:

学会利用for循环对灰度图像某一行或者列多个连续像素的颜色进行修改。

教学难点:

学会利用for循环对灰度图像几行或者几列像素的颜色进行修改。

教学准备:

示例图像,代码。


教学过程


一、开放导入

上节课学习了修改某个像素的颜色,我们先复习一下代码。

import cv2
img = cv2.imread('white.bmp')
img[10,30] = 0
print(img[10,30])
cv2.imshow('image',img)
cv2.imwrite('pic1.bmp',img)
cv2.waitKey(0)  #等待按键
cv2.destroyAllWindows()  #关闭窗口

哪位同学能说一下第2到第6行代码的含义?

如果要修改图像中多个像素的值,应该怎么办?

二、核心过程推进

1.修改white.bmp(100*100)图像中的多个像素的颜色,并保存到pic1.bm。。
如下图所示,要将white.bmp图像中[5,5]和[50,50]的像素颜色同时修改为黑色,需要怎么办?

在这里插入图片描述

结合上节课学习的修改某个像素颜色的代码进行思考,找出方法。

在修改某点像素值.py中进行修改并运行,查看结果。(参考0.py)

思考:如果要将white.bmp图像中第10列所有像素值修改为150,需要怎么办?

2.利用for循环对white.bmp图像中多个连续像素的颜色进行修改,并保存为pic2.bmp

将white.bmp图像中第10列所有像素值修改为150

import cv2

img = cv2.imread('white.bmp')

for i in range(0,100):

  j = 9

  img[i,j] = 150

cv2.imshow('image',img)

cv2.imwrite('pic2.bmp',img)

cv2.waitKey(0) #等待按键

cv2.destroyAllWindows() #关闭窗口

注意i循环的起始点和终止点,终止点不参与循环,所以要把终止点设为100,而不是99。j的位置要与i对齐,img也要与i对齐。

在这里插入图片描述

​ i(0,100)的结果
在这里插入图片描述
i(0,99)的结果

对比这两幅图像,找出区别。

学生先阅读“将第10列全部像素值修改为150,并保存为pic2.bmp”代码,然后运行。

讨论并操作:

1)如何将white.bmp图像中第20行,第10到50列像素值修改为50?打开“将第10列全部像素值修改为150,并保存为pic2.bmp.py”进行修改,然后运行。(参考1.py)

2)如何将white.bmp图像中第10列和第20列所有像素值修改为150?(参考2.py)

3)如何将white.bmp图像中第30列和第60行所有像素值修改为10?(参考3.py)

以上方法,我们可以修改图像中的某一条线的颜色,如果我们要修改图像中某一个区域的颜色,可以怎么做?

3.利用for循环对white.bmp图像中某个区域的像素颜色进行修改。

前面的练习中,只有i用一个for循环,要完成对区域颜色的修改,j也要用一个for循环。

将[10,30] – [20,50] 区域修改为黑色

import cv2

img = cv2.imread('white.bmp')

for i in range(10,31):

  for j in range(20,51):

    img[i,j] = 0

cv2.imshow('image',img)

cv2.imwrite('pic3.bmp',img)

cv2.waitKey(0) #等待按键

cv2.destroyAllWindows() #关闭窗口

在这里插入图片描述

注意,for j in range(20,51):这一行前面有四个空格,不能从最前面开始写。

思考并练习:如果要将white.bmp图像中[30,50] – [20,70] 区域、[20,60] – [30,40] 区域,这两个区域的颜色都修改为黑色,需要怎么做?(参考4.py)

4.不使用for循环,直接修改某一区域颜色

import cv2

img = cv2.imread('white.bmp')

img[10:20,30:50] = 0

cv2.imshow('image',img)

cv2.imwrite('pic4.bmp',img)

cv2.waitKey(0) 

cv2.destroyAllWindows() 

用此方法也可以修改多个区域。

5.将某一区域颜色修改为彩色

前面我们修改出来的颜色都是灰度的,怎样才能将修改出来的颜色变为彩色?

学生思考,回答。

import cv2

img = cv2.imread('white.bmp')

for i in range(10,31):

  for j in range(20,51):

    img[i,j] = [0,0,255]

cv2.imshow('image',img)

cv2.imwrite('pic5.bmp',img)

cv2.waitKey(0) 

cv2.destroyAllWindows() 

读上面代码,思考,运行后出来的结果是什么?

[0,0,255]三个值对应的依次是G、B、R。

运行“修改区域颜色为彩色(for).py”,观察结果。

然后通过修改GBR值,将该区域修改为其他颜色。

思考:不用for循环,如何完成修改某一区域颜色为彩色?(参考5)

思考:如何在ali.jpg图片中,画出两个不同颜色的区域?(参考6、7)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!