学号 20192428《Python程序设计》综合实践报告

课程:《Python程序设计》

班级: 1924

姓名: 魏来

学号:20192428

实验教师:王志强

实验日期:2020年6月8日

必修/选修: 公选课

1.实验内容

-Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。

-我选择了一个简单的数据分析课题——Numpy库,一个开源的python科学计算基础库。

2. 实验过程及结果

Numpy库我在上学期就有自己的研究,曾经在网空导论课中有一个课题是图片处理,当时进行了简单的图像处理控制。如今我想对Numpy库进行深度的刨析,做出属于自己的滤镜。

我要用到的库有: Numpy库、PIL库、cv2

首先是Numpy库对图片的简单读取。下面这张图是我这次实验的主角——

(某天走在路上的随手一拍天空~)

下面让我们看看Numpy库对图片的数组处理:

如图,Numpy库实际上是把图片当作一个二维数组处理——长、宽,而在每一个单元格中会有三个值,是代表色彩的RGB值。让我们一起看看这个图片的长度和高度。

让我们看看运行结果:

让我们看看对不对呢

可以看到图片属性的长宽都一致

同时还有一种方法可以让我们将图片的RGB值读出来——CSV文件:是一种常用的文件格式,可以用来批量的保存数据。下面代码片段是写入一个csv文件

利用降维函数,我对“Aim”进行降维并将其储存为变量“test1”,并将其储存为csv文件格式,命名Aim.csv。

让我们用vscode打开一个文件一起来看看吧:

同时让我们看一下这个图片转化的数组的属性:

以及运行结果

Topic Ⅰ:翻转图片

代码片段:

对图片翻转的操作非常简单,将二维数组的横轴和竖轴对换即可。所以如图我利用for循环对图片横轴(Size[0])遍历,同时建立一个Aim11的数组(因为之前探究属性时知道type为uint8),将Aim11作为新图片的容器,最后使用save函数保存Aim11的副本。下面为我得到的副本:

至此第一个小课题正式成功。

Topic Ⅱ:颜色翻转

代码片段

这可以说是最简单的一个课题了,只需要一个满RGB值[255,255,255]减去之前的数组,使数组中的每个RGB值取255的补数,就能够得到负片的效果,让我们一起看看这个处理过后的图片吧:

Topic Ⅲ:赛博朋克风格滤镜~

代码片段

通过cv2库和Numpy库的运用可以设计一份专属于你的滤镜,可以先来看看我的滤镜最终的效果。

显然做的不是很好。。。但对图片过暗和过亮地方的处理的确处理的很得当:

light_gamma_high = np.power(image_lab[:, :, 0], 0.8)

light_gamma_high = np.asarray(light_gamma_high / np.max(light_gamma_high) * 255, np.uint8)

light_gamma_low = np.power(image_lab[:, :, 0], 1.2)

light_gamma_low = np.asarray(light_gamma_low / np.max(light_gamma_low) * 255, np.uint8)

即上段代码

实验过程中遇到的问题和解决过程

Numpy库的学习是我最大的问题,但幸亏与Mooc上的老师们,我成功学会了这个库,下面是我的学习过程笔记照片:

我遇见的问题也很多,更多的是编程时的小错误,我举一个小例子:

在实验中topic Ⅰ中for循环的错误,导致图片处理进行了一个死循环,当程序结束后得到的成果。

这个则为做赛博朋克时的模板,使用了cv2的模板进行滤镜的编辑,但我在最后输出滤镜成品时忽略了数组命名,导致输出白忙活一场——输出了模板。而我自己却甚至一度以为这个模板即为我编辑的滤镜效果。

其他(感悟、思考等)

对全课进行总结,并写课程感想体会、意见和建议等

Python是我进入大学以来第一个感兴趣的事物,从第一周进入大学接触到它我就开始研究,我对python的笔记甚至多于我大学其他科目所有笔记加起来的总和。所以对我来所这是一门得心应手的语言,因此我选择了这门课程为我的第一次选修课的内容。

但进入班级以后王老师细心教导下,我发现了之前自己的编程习惯非常繁琐复杂,而且在自学的时候养成了很多坏习惯,一些简便编程写法也不习惯。我明白了python虽然相比C、C++亦或是其他语言来说相对智能,可以不用太追求精准,但对于语言的效率,很大程度是取决于你的编程效率。

Python学习中,我最好的三个老师就是王志强老师、MOOC中的松老师还有实验楼。三位老师帮助我完成了很多艰巨的学习挑战,在我的学习之路中提供了信心和思路。

感谢志强老师的帮助,感谢这门选修课,将来我会Python的道路上继续坚定的走下去。

再次感谢王志强老师!

以下是我的代码全文:

"20192428 魏来 Python期末作业"

#启动第三方库

from PIL import Image

import numpy as np

#准备工作

Aim = np.array(Image.open("D:/Deskdop/topic/aim.jpg"))

Size = Aim.shape #展示图片的size

print("图像高度{}宽度{}".format(Size[0],Size[1]))

#写入CSV文件

test = Aim.flatten()

np.savetxt("aimcsv.csv",test,fmt="%d",delimiter=" ")

#查看图片数组属性 20192428魏来

print(Aim.shape,Aim.dtype)

print(Aim)

#操作一:对图片进行翻转 20192428魏来

LoopNum1 = 0

LoopNum2 = 0

Aim11 = Aim

for i in range(Size[0]):

Aim11[LoopNum1,LoopNum2] = Aim[Size[0] - 1 - LoopNum1,LoopNum2]

LoopNum1 = LoopNum1 + 1

Aim11 = Image.fromarray(Aim11.astype("uint8"))

Aim11.save("D:/Deskdop/topic/Aim11.jpg")

#操作二:对图片进行颜色翻转 20192428

Aim12 = [255,255,255] - Aim

Aim12 = Image.fromarray(Aim12.astype("uint8"))

Aim12.save("D:/Deskdop/topic/Aim12.jpg")

#操作三:赛博朋克滤镜制作 20192428

import cv2

image_hls = cv2.cvtColor(Aim, cv2.COLOR_BGR2HLS)

image_hls = np.asarray(image_hls, np.float32)

hue = image_hls[:, :, 0]

hue[hue < 90] = 180 - hue[hue < 90]

image_hls[:, :, 0] = hue

image_hls = np.asarray(image_hls, np.uint8)

image = cv2.cvtColor(image_hls, cv2.COLOR_HLS2BGR)

image_lab = cv2.cvtColor(image, cv2.COLOR_BGR2Lab)

image_lab = np.asarray(image_lab, np.float32)

light_gamma_high = np.power(image_lab[:, :, 0], 0.8)

light_gamma_high = np.asarray(light_gamma_high / np.max(light_gamma_high) * 255, np.uint8)

light_gamma_low = np.power(image_lab[:, :, 0], 1.2)

light_gamma_low = np.asarray(light_gamma_low / np.max(light_gamma_low) * 255, np.uint8)

# 调色至偏紫

dark_b = image_lab[:, :, 2] * (light_gamma_low / 255) * 0.1

dark_a = image_lab[:, :, 2] * (1 - light_gamma_high / 255) * 0.3

image_lab[:, :, 2] = np.clip(image_lab[:, :, 2] - dark_b, 0, 255)

image_lab[:, :, 2] = np.clip(image_lab[:, :, 2] - dark_a, 0, 255)

image_lab = np.asarray(image_lab, np.uint8)

Aim13 = cv2.cvtColor(image_lab, cv2.COLOR_Lab2BGR)

Aim13 = Image.fromarray(Aim13.astype("uint8"))

Aim13.save("D:/Deskdop/topic/Aim13.jpg")

python课题报告_2019-2020-1 《python程序设计》20192428魏来 综合实践报告相关推荐

  1. python程序设计报告-20192416 实验四《Python程序设计》综合实践报告

    20192416 实验四 <Python程序设计> 综合实践报告 课程:<Python程序设计> 班级:1924 姓名:不愿透露姓名的はんたくさん 学号:20192416 实验 ...

  2. python实验过程心得体会_20192416 实验四《Python程序设计》综合实践报告

    20192416 实验四 <Python程序设计> 综合实践报告 课程:<Python程序设计> 班级:1924 姓名:不愿透露姓名的はんたくさん 学号:20192416 实验 ...

  3. python实训总结报告书_20172304 实验四python综合实践报告

    20172304 实验四python综合实践报告 姓名:段志轩 学号:20172304 指导教师:王志强 课程:Python程序设计 实验时间:2020年5月13日至2020年6月14日 实验分析 本 ...

  4. 计算机辅助设计综合实践,计算机辅助设计毕业综合实践报告

    计算机辅助设计毕业综合实践报告 (22页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 安徽水利水电职业技术学院毕业综合实践报告题目 专 业 ...

  5. 川大网络教育计算机综合实践,川大电子电工综合实践报告.docx

    川大电子电工综合实践报告 篇一:川大电工电子综合实践报告 实验报告一 L. C元件上电流电压的相位关系 一.实验线路.实验原理和操作步骤 操作步骤 1.调节ZH-12实验台上的交流电源,使其输出交流电 ...

  6. python前景和待遇-2020年Python的就业薪资有多少?前景如何?

    近几年,Python已经发展成为排名前3的受欢迎编程语言,了解编程语言的发展趋势,有助于个人职业成长:而对于想要入行IT的新人而言,最大担心就是就业问题,还有所学习语言未来的发展前景,下面给大家剖析下 ...

  7. java实验报告 05 类与_java程序设计类与方法-java实验报告

    java程序设计类与方法-java实验报告 java程序设计类与方法-java实验报告 1. 实验内容或题目 (1) 编写Java应用程序,实现以下功能:当应用程序运行后,根据屏幕提示进行交互式输入并 ...

  8. 关于使用计算机调查报告的目的,关于大学生电脑使用情况调查的实践报告(终.doc...

    关于大学生电脑使用情况调查的实践报告 --以西南科技大学为例 [内容摘要]:我们针对大学生是否能够合理地运用电脑的问题在西南科技大学进行了一次调查,并对调查结果做出了整理.主要是想大学生何时购买电脑最 ...

  9. 列车时刻管理c语言程序设计,列车时刻表信息管理系统实践报告C语言源代码

    #include"stdio.h" #include"stdlib.h" #include"string.h"/*定义头文件,处理文件及字符 ...

最新文章

  1. Xilinx ISE 14.7 安装教程
  2. 8 种最坑的 SQL 错误用法,你有没有踩过坑?
  3. HDU - 1542 Atlantis(线段树+扫描线)
  4. 使用SAP WebIDE往Github上推送代码修改时遇到错误消息 Commit request failed Commit failed. Ref must be HEAD and is HEAD
  5. 软件故障_一些主要的软件故障
  6. 张朝阳寄语“校花”把参赛比做登山 走到不同阶段都是一种成就
  7. python编程英语单词下载2019_图形化编程软件-mPython下载2019正式版 下载_久友软件下载...
  8. 想用 Python3 破冰人工智能?首先你得懂这些数学方法!
  9. liunx 环境下docker安装mysql
  10. 如何利用Pix2Pix将黑白图片自动变成彩色图片
  11. 大数据技术应用需要注意什么?
  12. python里冒号什么意思_在Python中冒号等于(:=)是什么意思?
  13. 最喜欢的动画片《长江7号爱地球》
  14. win10无限蓝屏_win10蓝屏died怎么办_win10无限process died解决方法
  15. C/C++ : 12-24小时制转换
  16. 《the Great Gatsby》Day 33
  17. 从一台 Windows 10 上共享文件夹到Docker中的Volume卷
  18. shop--10.店铺列表(后台)
  19. 网络安全学习--入侵检测和紧急响应
  20. shell教程(二) 四种工作模式

热门文章

  1. 机器学习:什么是监督学习(Supervised learning)?
  2. 大数据方面的核心技术
  3. 20150109-放弃了一切希望
  4. 【C语言】PAT乙级:1007 素数对猜想
  5. 升级Ubuntu 13.04 有感
  6. spring boot集成阿里云短信服务
  7. [置顶]《游戏引擎架构》信息总汇
  8. 手机h5 页面扫码上传图片 同步显示到pc端
  9. html a3纸大小,a0-a3纸的尺寸具体大小介绍【图文】
  10. CodeForces - 514B Han Solo and Lazer Gun