• 售前

  • 售后

热门帖子
入门百科

Python实训day08am【网络爬虫selenium、图像处理入门】

[复制链接]
天寿保健护理彰 显示全部楼层 发表于 2022-1-15 17:21:37 |阅读模式 打印 上一主题 下一主题
目录
1、网络爬虫-selenium(歌曲与歌词)
2、图像处理
2.1、安装库
2.2、图片处理
2.3、马赛克
2.4、副本-缩略图-粘贴-创建新图
2.5、代码汇总

   
   
   
  1、网络爬虫-selenium(歌曲与歌词)

   详见博客园笔记。CSDN审核过于严格,内容不通过。lu16 - 博客园
  2、图像处理

   Python  Pillow库,简单的图像处理:增强编程思维和编程能力。        图像识别OpenCV
  

  • 了解图片的像素处理等相关内容;
  • 调用库方法,完成图片的缩放、裁剪、滤镜、翻转等操作。
Numpy+Pandas 大数据处理(2天)
  2.1、安装库

   安装库:pip install pillow;查看库是否已安装:from PIL import Image。pillow:一个简易的图形处理库。
  
   
  2.2、图片处理

   from PIL import Image
  im = Image.open(r'C:\Users\lwx\Desktop\beauty.png');
im.show()  # 调用默认的图像显示器
im  # 展示图片
  
  
   
    
    
    
      
     
    
    
  2.3、马赛克

   马赛克原理分析:
  
   
  1. # 马赛克、图像的合成、粘贴等
  2. im = Image.open(r'C:\Users\qx\Desktop\beauty.png');
  3. # 马赛克处理
  4. #   图片中有很多小方块组成,
  5. #   每个块中所有的像素点的值是一样的,所以我们看到是由一个个小方块组成的整体
  6. #   假设取每个方块区域的左上角的那个像素点,作为整体像素点的统一取值
  7. # 整体 1280x1280
  8. # 假设方块大小是50x50
  9. # 经过分析,对于坐标(x,y)它应该设置成(x//50*50,y//50*50)位置的像素
  10. # 遍历所有的像素点,设置像素
  11. w, h = im.size;
  12. for x in range(w):
  13.     for y in range(h):
  14.         p = im.getpixel((x // 20 * 20, y // 20 * 20));  # 取值 (取更细节的粒度)
  15.         im.putpixel((x, y), p);  # 设置值
  16. im.show();
复制代码
2.4、副本-缩略图-粘贴-创建新图

     
    
    1.创建一张大图 (200*200)
2.创建n张各种随机颜色的小图(10*10),贴到大图上
  import random as rd
  for x in range(20):
    for y in range(20):
        # x,y就自动对应粘贴时的坐标
        small = Image.new('RGB', (10, 10), (rd.randint(0, 255), rd.randint(0, 255), rd.randint(0, 255)));
        im.paste(small, (x * 10, y * 10));
im
   
   
  2.5、代码汇总

  1. from PIL import Image
  2. im = Image.open(r'C:\Users\lwx\Desktop\beauty.png');
  3. # im.show()  # 调用默认的图像显示器
  4. # im  # 展示图片
  5. # ----------------------------------------------------------------------
  6. im.mode  # RGB 图片的通道
  7. '''
  8. r:red、g:green、b:blue——光学3原色
  9. 计算机中任何一个像素点的色彩,是由红绿蓝三种颜色合成的,
  10. 所以在描述一个像素点颜色时,我们会使用"红绿蓝"三个值来表示.
  11. 红:0~255;绿:0~255;蓝:0~255
  12. 色彩的种类:256*256*256种色彩
  13. html  color  background-color : #698742  rgb(125,223,145)
  14. '''
  15. # ----------------------------------------------------------------------
  16. im.size  # 元组
  17. '''
  18. 元组tuple 【不增删的列表】
  19. 宽、高(单位:像素)
  20. 单位面积内,像素点越多【像素点越密集】,图像越清晰
  21. 1280*1280个像素点,每个像素点都有rgb三个值
  22. 大概的图片字节数:1280*1280*3
  23.     print(1280*1280*3 / 1024 /1024)
  24.     1903KB,在图片存储时有算法上的压缩
  25. '''
  26. print(1280 * 1280 * 3)  # 4915200
  27. print(1280 * 1280 * 3 / 1024)  # 4800.0
  28. print(1280 * 1280 * 3 / 1024 / 1024)  # 4.6875
  29. # ----------------------------------------------------------------------
  30. p = im.getpixel((738, 476));  # (738, 476)位置的像素点
  31. print(p)  # (107, 134, 163)
  32. # ----------------------------------------------------------------------
  33. # 将每个通道(R\G\B\A)的像素,单独取出
  34. print(im.mode)  # RGB
  35. ts = im.split();  # 分割通道(R通道数据、G通道数据、B通道数据)
  36. print(len(ts))  # 3
  37. # r = ts[0];
  38. # g = ts[1];
  39. # b = ts[2];
  40. r, g, b = im.split();  # 居然还能这样赋值!分别赋值
  41. print(type(r));  # <class 'PIL.Image.Image'>
  42. print(r)  # <PIL.Image.Image image mode=L size=1280x1280 at 0x1EE70FBC760>
  43. print(r.mode)  # L,表示单通道
  44. # r、g、b,单通道也能展示图像,只是不同“感觉”的灰色
  45. num = r.getpixel((738, 476));
  46. print(num)  # 你觉得值是什么?? 107 单通道
  47. print(g.getpixel((738, 476)))  # 134 单通道
  48. print(b.getpixel((738, 476)))  # 163 单通道
  49. # ----------------------------------------------------------------------
  50. # merge,合并通道与split相反
  51. im3 = Image.merge("RGB", (r, g, b));  # 正常
  52. im4 = Image.merge("RGB", (b, r, g));  # 通道混乱,图片很异常
  53. # (107, 134, 163) - --> (163, 107, 134)  # 每个像素点的颜色都变化了,这就导致图片整体变化
  54. im4
  55. # ----------------------------------------------------------------------
  56. im = Image.open(r'C:\Users\lwx\Desktop\beauty.png');
  57. # 每个像素点的rgb的值,都修改为(255-r, 255-g, 255-b)
  58. # 取反得到曝光后的效果
  59. im2 = im.point(lambda x: 255 - x);  # 修改成反色,例如 本来值是0(黑),255-0得到了255(白)
  60. # im2 = im.point(lambda x: 0);  # 效果是纯黑
  61. # im2 = im.point(lambda x: (x + 100) % 256);  # 多种设置方式
  62. im2
  63. # 胶卷,柯达相机
  64. # ----------------------------------------------------------------------
  65. # 设置某一个像素点的值:im.putpixel((x坐标,y坐标),(r,g,b的值)) # 两个元组
  66. # 灰色:(200,200,200)
  67. # 426-408~825-513 范围所有像素点统统设置成灰色
  68. im = Image.open(r'C:\Users\lwx\Desktop\beauty.png');
  69. for x in range(426, 825):
  70.     for y in range(408, 514):
  71.         im.putpixel((x, y), (200, 200, 200));
  72. im
  73. # ----------------------------------------------------------------------
  74. im = Image.open(r'C:\Users\lwx\Desktop\beauty.png');
  75. # 切割
  76. rect = (507, 648, 750, 753);  # 左上角的两个~右下角的两个
  77. im2 = im.crop(rect)
  78. im2
  79. # ----------------------------------------------------------------------
  80. # 缩放
  81. w, h = im.size;
  82. # resize( (新宽度,新高度) )
  83. im2 = im.resize((w // 5, h // 5));  # 宽度和高度都缩小5倍
  84. im2
  85. # ----------------------------------------------------------------------
  86. # 旋转
  87. im3 = im2.rotate(45);  # 旋转45度
  88. im3
  89. # ----------------------------------------------------------------------
  90. # 镜面
  91. im3 = im2.transpose(Image.FLIP_LEFT_RIGHT)  # Image.FLIP_TOP_BOTTOM
  92. im3
  93. # ----------------------------------------------------------------------
  94. '''
  95. 滤镜处理
  96. BLUR - 模糊处理
  97. CONTOUR - 轮廓处理
  98. DETAIL - 增强
  99. EDGE_ENHANCE - 将图像的边缘描绘得更清楚
  100. EDGE_ENHANCE_NORE - 程度比EDGE_ENHANCE更强
  101. EMBOSS - 产生浮雕效果
  102. SMOOTH - 效果与EDGE_ENHANCE相反,将轮廓柔和
  103. SMOOTH_MORE - 更柔和
  104. SHARPEN - 效果有点像DETAIL
  105. '''
  106. from PIL import ImageFilter
  107. im3 = im.filter(ImageFilter.SMOOTH_MORE)  # BLUR
  108. im3
  109. # ----------------------------------------------------------------------
  110. # 马赛克、图像的合成、粘贴等
  111. im = Image.open(r'C:\Users\lwx\Desktop\beauty.png');
  112. '''
  113. 马赛克处理
  114.     图片中有很多小方块组成,
  115.     每个块中所有的像素点的值是一样的,所以我们看到是由一个个小方块组成的整体
  116.     假设取每个方块区域的左上角的那个像素点,作为整体像素点的统一取值
  117. '''
  118. # 整体1280x1280,假设方块大小是50x50
  119. # 经过分析,对于坐标(x,y)它应该设置成(x//50*50,y//50*50)位置的像素
  120. # 遍历所有的像素点,设置像素
  121. w, h = im.size;
  122. for x in range(w):
  123.     for y in range(h):
  124.         p = im.getpixel((x // 20 * 20, y // 20 * 20));  # 取值 (取更细节的粒度)
  125.         im.putpixel((x, y), p);  # 设置值
  126. im.show();
  127. # ----------------------------------------------------------------------
  128. # copy副本
  129. # thumbnail缩略图
  130. im1 = Image.open(r'C:\Users\lwx\Desktop\beauty.png');
  131. im2 = im1.copy();  # 新对象,与原来的im1,一样
  132. im2.thumbnail((100, 100));  # 此处im1没有变化
  133. im2
  134. # ----------------------------------------------------------------------
  135. # paste粘贴
  136. '''
  137. 函数/方法的调用:
  138.     有几个参数,参数类型是什么,参数表示什么意思
  139.     有没有返回值,返回的是什么东西
  140.     会不会修改原对象
  141.     (对于常见操作,常用函数,以上问题是需要非常明白清晰的)
  142.     90%(搬砖的)--->编程,就是调用各种函数(API接口)来处理数据 【过得很好 20k 30k,小康】
  143.     不知道调用哪个(缺少知识/缺少思路)、 对于知识的掌握很模糊,不成整体(感觉学了很多,但是又不知道学了什么)
  144.     难--->下的功夫不够,方向不对,缺少方法,没有得到合适的指点
  145. '''
  146. # 注意,paste没有返回值,直接修改原图
  147. im.paste(im2, (0, 0));  # 将im2图片,贴到im图片的(0,0)位置(左上角)
  148. im.paste(im2, (100, 0));  # 多贴几张
  149. im.paste(im2, (200, 0));
  150. im
  151. # ----------------------------------------------------------------------
  152. # new:新建图片(纯色)
  153. # 模式、大小、颜色
  154. # 参数很多,不要死记硬背,结合功能理解着去记忆
  155. # 新建一张,宽500高500,白色的图片
  156. im = Image.new('RGB', (200, 200), (255, 214, 214));  # 参数1为固定,参数2:宽高,参数3:颜色充填
  157. im
  158. # ----------------------------------------------------------------------
  159. # 1.创建一张大图(200*200)
  160. # 2.创建n张各种随机颜色的小图(10*10),贴到大图上
  161. import random as rd
  162. for x in range(20):
  163.     for y in range(20):
  164.         # x,y就自动对应粘贴时的坐标
  165.         small = Image.new('RGB', (10, 10), (rd.randint(0, 255), rd.randint(0, 255), rd.randint(0, 255)));
  166.         im.paste(small, (x * 10, y * 10));
  167. im
  168. # 以上小图片small是我们自己创建的纯色图片,根据需要可以换成已有的图片,这样可以实现多张小图片合成一张大图片的效果
复制代码
  《蛊真人》
  半部人祖传,靡靡惑人心。
  崖边疯红莲,捧水拓春秋。
  局中局酒虫儿自笑傲,王中王狼族谁敢言雄。
  遥望乡土山如故,人心不故福寿长。
  问长生猴王束手,觅永恒方源破局。
  书生有意,戏子望怜,却难敌那名伶一句,律法森严。
    

来源:https://blog.caogenba.net/weixin_44949135/article/details/122473961
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!

精彩评论1

winwin99 显示全部楼层 发表于 2022-6-23 16:16:37
部队初到平武县平通镇时,严重的灾情深深地震憾着张玉堂的心,他总是默默地冲在最前面,不但率先完成自己的任务,还主功帮助其他战士。后来,营党委安排张玉堂到炊事班工作,张玉堂主动担当起大厨的重任。中午营房温度高达50摄氏度,许多年轻战士都熬不住了

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作