ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-01-30 10:09:51  阅读:331  来源: 互联网

标签:06 img 05 cv2 像素 修改 bmp white


**学科:**人工智能 年级: 七年级上
课题: 第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)

崂山区人工智能教育实验室 发布了6 篇原创文章 · 获赞 0 · 访问量 251 私信 关注

标签:06,img,05,cv2,像素,修改,bmp,white
来源: https://blog.csdn.net/qq_34660800/article/details/104112391

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有