【python与数据分析】实验八——图像批量添加数字水印及实现模拟转盘抽奖游戏
一、实验目的
1.理解空域添加数字水印的原理;
2.熟悉安装扩展库pillow;
3.熟悉扩展库pillow操作图像方法;
4.熟悉运用字典结构。
5.初用numpy实现模拟转盘抽奖游戏
二、实验内容
1.将本周课堂或视频讲的代码选部分在IDLE 或 Jupyter 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 randint
from os import listdir
from PIL import Image#打开并读取其中的水印像素,即不是白色背景的像素
#读到内存中,放到字典中以供快速访问
im=Image.open('muc.jpg')
width,height=im.size
pixels=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 np
import 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.结果
【python与数据分析】实验八——图像批量添加数字水印及实现模拟转盘抽奖游戏相关推荐
- 图像批量添加数字水印
图像批量添加数字水印 首先准备图像文件,然后把该文件中的图像内容作为数字水印批量添加到 某个文件夹中所有图像文件中,要求水印在目标图像文件中的位置随机选择为左上角.右下角或图像中间,并且水印图像的背景 ...
- Python使用numpy和pandas模拟转盘抽奖游戏
之前写过一个类似的代码,不过都是用的Python内置对象,详见几行Python代码模拟轮盘抽奖游戏,本文再提供一个使用numpy和pandas实现的代码. 问题描述:有时候饭店或商场会搞活动,门口一个 ...
- Python之字典巩固练习(随机生成银行卡号、重复数字统计、模拟轮盘抽奖游戏等)
一.检测并输出重复单词 需求: 重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.>:1. 用户输入一句英文句子:2. 打印出每个单词及其重复的次数;输入:"hello ...
- Python实现数据分析(八)数据清洗(DataClean)
前言 "压根儿就没有干净的数据集." -- 乔希·沙利文 <纽约时报>将数据清洗称为"看门人工作",并称数据科学家百分之八十的时间都花费在了这些清洗 ...
- python股票数据分析实验报告_Python实验报告
一. 实验原理 ( 要求.任务等 ) (一).Python的开发环境 Python诞生于20世纪90年代初,是一种解释型.面向对象.动态数据类型的高级程序设计语言,是最受欢迎的程序设计语言之一. 编写 ...
- 数字图像处理实验八图像的傅里叶变换
自选一幅灰度图像,编写MATLAB程序,完成图像的傅里叶变换并显示图像傅里叶变换谱. 1.快速图像傅里叶变换函数 Y = fft2(X) 2.将图像频谱零频分量移动到图像频谱中心 Y = fftshi ...
- 利用Python多进程执行,加快MySQL批量添加数据的执行速度
现在有个表t 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人 ...
- Python语言程序设计——实验八
1.身体质量指数(英文为Body Mass Index,简称BMI),其值为体重除以身高的平方.体重单位为千 克,身高 单位为米.BMI是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准.下面是 ...
- 【Python与数据分析实验报告】Pandas数据分析基础应用
目录 任务内容 (1)将数据进行转置,转置后型如eg.csv, 缺失值用NAN代替. (2) 对数据中的异常值进行识别并用NA代替. (3) 计算每个用户用电数据的基本统计量,包括:最大值.最小值.均 ...
最新文章
- Octavia health-manager 与 amphora 故障修复的实现与分析
- 2020年行政区划代码_2020年梧州市行政区划,了解梧州市有几个区,详细数据
- webstrom打开多个项目,webstrom常用快捷键
- C++---堆代码实现
- 【关系抽取】详聊如何用BERT实现关系抽取
- MyBatis关联映射
- vue写一个简单的警察抓小偷的打字游戏
- 基于正点原子stm32mini板的串行通信原理
- C#/VB.NET 合并PDF页面
- 空间域图像增强(matlab实现)
- 看51CTO新闻的感想(宝兰)
- 网站文章采集器-万能文章采集器
- OpenMP与MPI
- Verilog 加法器/减法器
- protoc与protoc-gen-go安装
- MobaXterm登录密码重置
- MATLAB数字图像处理(一)——图像打开、保存与显示
- java数值精度_java数字运算精确度
- Ae:图层的常用属性及相关操作
- 在线教育网站如何更好的实现视频安全视频保护?
热门文章
- 大家都在努力,你凭什么不努力?
- 在网易有数上做数据加工和数据分析的实践
- Kong 网关 | Rate Limiting 限流
- 某音热门---图片转字符SpringBoot版
- 基于AM5728 DSP JTAG连接调试方法
- 元宇宙资讯|消息称苹果 MR 头显发售要等到 2025 年
- 绿叶制药阿尔茨海默病创新药利斯的明多日透皮贴剂在英国获批上市;云顶新耀与AbCellera达成合作 | 医药健闻...
- 【揭秘】美团外卖日单量破1600万背后的“超级大脑”之订单分配
- 安卓手机续航测试软件,10款手机电池续航测试对决:都是骁龙865手机,续航差距有多大?...
- 1977年图灵奖--约翰·巴克斯简介