**学科:**人工智能 | 年级: 七年级上 |
---|---|
课题: 第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)
来源:CSDN
作者:崂山区人工智能教育实验室
链接:https://blog.csdn.net/qq_34660800/article/details/104112391