小猪佩奇的4种python玩法,带你趣味学python!(二)

简介: 小猪佩奇的4种python玩法,带你趣味学python!(二)

2.利用python给小猪佩奇换背景色

我们在昨天已经讲述过怎么使用python库给证件照换底色,大家可以参考那篇文章学习一下。换背景色的原理:每一个图像都是由像素点构成的,我们想要替换他们的颜色,就是找到每个像素点对应的位置,然后用指定颜色,去替换它!一般证件照背景色并不是同一种蓝色像素点,无法完成像素点的定位,这就需要我们对图像进行【腐蚀】或【膨胀】,完成图片黑白话,这样白色的像素点是255,就可以很好的定位了。


import cv2
import numpy as np
# 读取照片
img=cv2.imread('zhu.jpg')
# 图像缩放
img = cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape
print(rows,cols,channels)
cv2.imshow('img',img)
# 图片转换为灰度图
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imshow('hsv',hsv)
# 图片的二值化处理
lower_blue=np.array([90,70,70])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
#腐蚀膨胀
erode=cv2.erode(mask,None,iterations=1)
cv2.imshow('erode',erode)
dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)
#遍历替换
for i in range(rows):
  for j in range(cols):
    if erode[i,j]==255: # 像素点为255表示的是白色,我们就是要将白色处的像素点,替换为红色
      img[i,j]=(0,0,255)#此处替换颜色,为BGR通道
cv2.imshow('res',img)
# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)


结果如下:


image.png

3.利用python将小猪佩奇切分为九宫格

将图片切分为九宫格的原理就是:找到图片对应位置的坐标,然后进行切割。由于是九宫格,我们切分的是3*3,然后利用双层循环遍历对应位置的坐标后,进行图片切割。


from PIL import Image
import sys
#将图片填充为正方形
def fill_image(image):
    width, height = image.size
    #选取长和宽中较大值作为新图片的,小的地方,用图片填充为等宽等高
    new_image_length = width if width > height else height
    #生成新图片[白底]
    new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white')
    #将之前的图粘贴在新图上,居中
    if width > height:#原图宽大于高,则填充图片的竖直维度
        #(x,y)二元组表示粘贴上图相对下图的起始位置
        new_image.paste(image, (0, int((new_image_length - height) / 2)))
    else:
        new_image.paste(image, (int((new_image_length - width) / 2),0))
    return new_image
#切图
def cut_image(image):
    width, height = image.size
    item_width = int(width / 3)
    item_height = int(height / 3)
    box_list = []
    #双重循环,生成9张图片基于原图的位置
    # 注意:图片左上角是(0,0),右下角是(width,height)
    for i in range(0,3):
        for j in range(0,3):
            print((j*item_width,i*item_height,(j+1)*item_width,(i+1)*item_height))
            box = (j*item_width,i*item_height,(j+1)*item_width,(i+1)*item_height)
            box_list.append(box)
    image_list = [image.crop(box) for box in box_list]
    return image_list
#保存
def save_images(image_list):
    index = 1
    for image in image_list:
        image.save(str(index) + '.jpg')
        index += 1
file_path = "zhuzhu.jpg"
image = Image.open(file_path)
image = fill_image(image)
image_list = cut_image(image)
save_images(image_list)


结果如下:

image.png


4.利用python制作小猪佩奇动态二维码

代码说明:如果我们利用的背景图是gif动态图,生成的就是动态二维码。如果利用的背景是静态图,生成的是静态二维码。


from MyQR import myqr
import matplotlib.pyplot as plt
# 生成的二维码最终在你电脑的存储位置
# 当你使用了动态图作为背景,这里可以写成".gif",保存出来的就是gif动态二维码!
save_name = '傻逼1.gif'
myqr.run(
    # 该链接表示你想要生成二维码的链接。
    words='https://blog.csdn.net/weixin_41261833',
    version=10,  # 容错率
    level='H',  # 纠错水平,范围是L、M、Q、H,从左到右依次升高
    colorized=True, # False为黑白
    contrast=1.5,  # 用以调节图片的对比度,1.0 表示原始图片。
    brightness=1.0,  # 用来调节图片的亮度。
    save_name=save_name,#存储的文件名
    # 背景图片的路径,你如果给的是".png/.jpg"等静态图片,最终生成的就是静态二维码!
    # 背景图片的路径,你如果给的是".gif"等动态图片,最终只需要保存为".gif",生成的就是动态二维码!
    picture=r"G:\1Pycharm_Project\csdn分享系列\小猪佩奇的几个操作\动态.gif"
    )
# 查看生成的二维码图片
img = Image.open(save_name) # 读取所保存的图片展示二维码
plt.figure("Image") # 图像窗口名称
plt.imshow(img)
plt.axis('off') # 关掉坐标轴为 off
plt.show()


结果如下:

image.png

相关文章
|
4月前
|
Python
Python黑魔法揭秘:闭包与装饰器的高级玩法,让你代码飞起来
【7月更文挑战第7天】Python的闭包和装饰器是提升代码效率的神器。闭包是能记住外部作用域变量的内部函数,常用于动态函数创建。示例中,`make_multiplier_of`返回一个保留`n`值的闭包。装饰器则是一个接收函数并返回新函数的函数,用于在不修改原函数情况下添加功能,如日志或性能追踪。`@my_decorator`装饰的`say_hello`函数在执行时会自动加上额外操作。掌握这两者,能让Python代码更优雅、强大。**
33 1
|
Python
编程新手?跟着这个教程,用Python画出小猪佩奇
编程新手?跟着这个教程,用Python画出小猪佩奇
210 1
编程新手?跟着这个教程,用Python画出小猪佩奇
|
开发者 Python
Python Excel操作新玩法:从零到高手掌握openpyxl
Python Excel操作新玩法:从零到高手掌握openpyxl
123 0
|
存储 NoSQL Redis
Python Redis数据库新玩法:从零到高手掌握操作技巧
Python Redis数据库新玩法:从零到高手掌握操作技巧
126 0
|
数据采集 自然语言处理 前端开发
python,你也和小猪佩奇一样社会了!
python,你也和小猪佩奇一样社会了!
97 0
|
Python
哆啦A梦和小猪佩奇(Python实现)
哆啦A梦和小猪佩奇(Python实现)
236 0
|
小程序 数据安全/隐私保护 Python
Python print 函数 \r 转义字符的玩法及解析——转圈效果、动态表情、小数点加载、进度条
Python print 函数 \r 转义字符的玩法及解析——转圈效果、动态表情、小数点加载、进度条
470 0
|
Python
Python画樱花树代码和小猪佩奇
Python画樱花树代码和小猪佩奇
|
4天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。