資源簡介 作業(yè)練習(xí)課程基本信息學(xué)科 信息技術(shù) 年級(jí) 高二 學(xué)期 秋季課題 3.3.3簡單算法及程序?qū)崿F(xiàn)(實(shí)踐與體驗(yàn))--圖像字符畫教科書 書 名:信息技術(shù)必修1《數(shù)據(jù)與計(jì)算》 出版社:浙江教育出版社學(xué)生信息姓名 學(xué)校 班級(jí) 學(xué)號(hào)作業(yè)練習(xí)一、基礎(chǔ)練習(xí)題1.【嘉興市2021年第一學(xué)期高二信息技術(shù)期末試題】部分改編,圖像字符畫。應(yīng)用Python中的Image模塊后,將手寫的數(shù)字圖片處理成由0,1表達(dá)的文本文件。手寫圖像如第1題圖a所示,運(yùn)行后文本文件結(jié)果如第1題圖b所示。 第1題圖a第1題圖b(一)項(xiàng)目分析與算法思路 首先需要先將圖像統(tǒng)一轉(zhuǎn)換為黑白圖像。以彩色圖像(RGB顏色模式)為例,可以按照如下數(shù)學(xué)模型將彩色圖像中每個(gè)像素的RGB值轉(zhuǎn)換成灰度值: 灰度值gray = 0.299×R+0.587×G+0.114×B 根據(jù)像素的灰度值,若灰度值小于限定值(如132),則判定為黑色,用ASCII碼字符“1”填充;否則判定為白色,用ASCII碼字符“0”填充。 算法思路: 遍歷圖片中的所有像素點(diǎn) 判定每個(gè)像素點(diǎn)灰度值的填充字符 把填充字符寫入文本文件。 (二)完善程序 (1)若第1題圖a的圖像大小為512×120,則生成的文本文件(1.txt)的容量約為: KB(單選,填字母:A.7.5 / B.60) (2)實(shí)現(xiàn)該功能的python程序如下,請完善程序: from PIL import Image def judge(R,G,B): gray=0.299*R+0.587*G+0.114*B #轉(zhuǎn)成灰度值 color= ① #1 return color img=Image.open("sx.jpg") pix=img.load() #讀取所有像素的顏色值 fh=open("1.txt","w") #2 width=img.size[0] #圖像寬度 height= ② #圖像高度 for i in range(height): line='' for j in range(width): R,G,B=pix[j,i] #根據(jù)像素坐標(biāo)獲得該點(diǎn)的RGB值 ③ if color==0: line=line+"1" else: line=line+"0" fh.write(line) fh.write("\n") #3 fh.close() (3)結(jié)合程序,回答問題①寫出與注釋1處(#1)語句功能等同的語句塊:②注釋2處(#2)語句的作用是: ③注釋3處(#3)語句若刪除,程序 (選填:是或否)還能正常運(yùn)行。 ④若將程序中的畫框處語句修改為下面語句,程序運(yùn)行后, (選填:是或否)還能得到第1題圖b所示字符畫,說說原因 。二、拓展練習(xí)題1. 【嘉興市2021年新教材練習(xí)卷】現(xiàn)有一副RGB模式的彩色位圖,將其轉(zhuǎn)換為一副黑白圖像,并壓縮存儲(chǔ),具體的步驟如下: (1)將圖像轉(zhuǎn)換為灰度圖像(位深度為8位),并將灰度值以二維列表形式存儲(chǔ)。 (2)設(shè)定特定值128,當(dāng)元素值大于128,則將該元素值設(shè)為1,否則設(shè)為0,逐行轉(zhuǎn)化并存儲(chǔ)到一維列表a中。 (3)將a列表按順序遍歷,將連續(xù)相同的元素值壓縮為一個(gè)數(shù)字加元素值的形式,并存入列表b中。例如某一段元素值為:1111100011000,可以壓縮為:5,1,4,0,2,1,3,0, 將一維列表b以文件的形式保存,完成圖像壓縮。運(yùn)行效果如圖所示: (1)圖片壓縮的部分程序代碼如下,請完善程序 from PIL import Image import numpy as np img=np.array(Image.open('nanhu.jpg').convert('L')) rows,cols= ① # img的行,列數(shù),分別存儲(chǔ)到rows與cols中 a = [] for i in range(rows): for j in range(cols): x= ② a.append(x) b=[] s="" t=1 for i in range(len(a)-1): if ③ : t=t+1 else: s=str(t)+","+str(a[i])+"," b.append(s) t=1 f=open("ys.txt","w") f.writelines(b) f.close() (2)一副未經(jīng)壓縮的BMP位圖,顏色位深度為24,壓縮后的結(jié)果為:“5000,1,47800,0,3250,1,60000,1,3950,0,”,則壓縮前該位圖的存儲(chǔ)容量約為 。(單選,填字母。A.352KB / B.2.75MB / C.14.6KB) 參考答案 一、基礎(chǔ)練習(xí)題1. 參考答案 (1)B (2)①gray//132 或其他等價(jià)答案 ②img.size[1] 或img.height ③color=judge(R,G,B)(3)①if gray>=132:color=1else:color=0② 以讀寫方式打開文本文件1.txt ③ 否④ 否 因?yàn)樽x取像素值時(shí)縱坐標(biāo)不變,橫坐標(biāo)[0,rows)【解析】 (1)文本文件中,每個(gè)字符存儲(chǔ)需1B,在圖像字符畫過程中,1個(gè)像素點(diǎn)對(duì)應(yīng)1個(gè)字符,故存儲(chǔ)容量共512*120B,即60KB。(2)①按項(xiàng)目分析思路若灰度值小于限定值(如132),則判定為黑色,此空是將灰度像素值轉(zhuǎn)為黑白兩色,即0,1值,用字符映射思想。②讀取圖像高度,故答案img.size[1] 或img.height。③運(yùn)用自定義函數(shù)將圖像的像素點(diǎn)的灰度值轉(zhuǎn)為黑白值。(3)①分情況討論的思想進(jìn)行字符映射。②文件讀寫操作中參數(shù)為“w”的作用是寫文件模式。③不能,因?yàn)闆]有換行,字符畫不能正常顯示。④在讀取像素時(shí),縱坐標(biāo)不變,橫坐標(biāo)從0到rows-1。 二、拓展練習(xí)題 1. 參考答案 (1) ①img.shape 或者shape[0],shape[1] ②img[i,j]//128 ③a[i]==a[i+1] (2)A 【解析】 (1)程序①處代碼img.shape,讀取圖片的長和寬,存儲(chǔ)到rows與cols中。程序②處代碼是將每個(gè)像素點(diǎn)的值轉(zhuǎn)換成0、1表示,根據(jù)題干,超過128為1,否則為0,可以用整除表示。程序③處代碼是統(tǒng)計(jì)連續(xù)相同的個(gè)數(shù)并存儲(chǔ)到b列表中,依次遍歷,如果相鄰a[i]==a[i+1],則t+1,如果不相等,則將計(jì)數(shù)個(gè)數(shù)t和a[i]連接后存儲(chǔ)到b中。 (2)根據(jù)壓縮結(jié)果計(jì)算0、1的總個(gè)數(shù)是120000,這就是該圖像的總像素?cái)?shù)。然后使用公式:像素?cái)?shù)*位數(shù)/8來計(jì)算,120000*24/8/1024=352KB。 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫