700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【python与数据分析】实验八——图像批量添加数字水印及实现模拟转盘抽奖游戏

【python与数据分析】实验八——图像批量添加数字水印及实现模拟转盘抽奖游戏

时间:2022-12-10 04:32:46

相关推荐

【python与数据分析】实验八——图像批量添加数字水印及实现模拟转盘抽奖游戏

一、实验目的

1.理解空域添加数字水印的原理;

2.熟悉安装扩展库pillow;

3.熟悉扩展库pillow操作图像方法;

4.熟悉运用字典结构。

5.初用numpy实现模拟转盘抽奖游戏

二、实验内容

1.将本周课堂或视频讲的代码选部分在IDLEJupyter Notebook中敲一遍。

2.首先准备一个图像文件(参考代码是民大校徽muc.png)作为水印,再准备一些图像文件(.jpg,.bmp,.png等类型均可,具体是什么类型,在代码体现出来就可!),参考代码是将文件都拷到当前工作目录上(我的工作目录是C:\python37\),如果文件不在当前工作目录,代码中打开文件和保存文件的语句要体现文件路径

>>> import os>>> os.getcwd() #查看当前工作目录'E:\\python 3.7\\程序保存'

3.用到numpy\pandas的方法先自学相应部分(后面会讲)。

三、实验要求

水印在目标图像文件中的位置随机选择为左上角、右下角或图像中间,并且水印图像的背景在目标图像设置中设置成透明。添加水印后的图存为xxx_new.kkk。注意:水印图的像素大小要小于被加水印的图,否则,加不了!

四、实验步骤

1.需敲入的代码见ppt课件或视频;

2.先按实验目的做完,再敲入参考代码运行,在理解代码原理基础上,改编程序。

3.编程实现模拟转盘抽奖游戏,统计不同奖项的获奖概率。

五、图像批量添加水印

1.代码

from random import randintfrom os import listdirfrom PIL import Image#打开并读取其中的水印像素,即不是白色背景的像素#读到内存中,放到字典中以供快速访问im=Image.open('muc.jpg')width,height=im.sizepixels=dict()for w in range(width):for h in range(height):c=im.getpixel((w,h))[:3]if c!=(255,255,255):pixels[(w,h)]=cdef addWaterMark(srcDir):#获取目标文件夹中所有图像文件列表picFiles=[srcDir+'\\'+fn for fn in listdir(srcDir) if fn.endswith(('.bmp','.jpg','.png'))]#遍历所有文件,为每个图像添加水印for fn in picFiles:iml=Image.open(fn)w,h=iml.size#如果图片尺寸小于水印图片,不加水印if w<width or h<height:continue#其原始图像左上角、中间或右小角添加数字水印#具体位置根据position进行随机选择p={0:(0,0),#左上角1:((w-width)//2,(h-height)//2),#中间位置2:(w-width,h-height)}#右下角#随机生成一个位置position=randint(0,2)left,top=p[position]#修改像素值,添加水印for p,c in pixels.items():try:#目标图像是彩色的iml.putpixel((p[0]+left,p[1]+top),c)except:#目标图像是灰色的iml.putpixel((p[0]+left,p[1]+top),sum(c)//len(c))#保存加入水印之后的新图像文件iml.save(fn[:4]+'_new'+fn[-4:])#为当前文件夹中的图像文件添加水印addWaterMark('.')

2.结果

六、模拟转盘抽奖游戏

1.代码

import numpy as npimport pandas as pd#模拟转盘100000次data=np.random.ranf(100000)#奖项等级划分category=(0.0,0.08,0.3,1.0)labels=('一等奖','二等奖','三等奖')#对模拟数据进行划分result=pd.cut(data,category,labels=labels)#统计每个奖项的获奖次数result=pd.value_counts(result)#查看结果print(result)

2.结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。