AI学习_PIL图像处理_OpenCV视频处理_flask本地web服务器_高数基础与“梯度下降”

PIL图像处理

一个图像处理模组,在opencv无法使用中文时,可以切换至PIL来转换中文
(下附opencv插入中文函数)

基础操作

引入模组后
使用Image.open导入图片:

import PIL
from PIL import Image, ImageFilter, ImageFont, ImageDraw

img = Image.open("img/1.jpg")
img.show()

此为opencv插入中文函数,使用draw创建画布、truetype设置字体等参数、text进行绘制
再通过 cv2.cvtColor(opencv中的函数)转换PIL_opencv的格式

def opencv_draw_text(text, x, y, img):
    # 写文字方式,把图像转成PIL,写完文字再转回来
    # 先转换颜色码
    cv2img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    pilimg = Image.fromarray(cv2img)

    # 在pil中打印中文
    draw = ImageDraw.Draw(pilimg)  # 创建画布
    font = ImageFont.truetype("simhei.ttf", 25, encoding="utf-8")
    draw.text((x, y), text, (255, 255, 255), font=font)

    # 再从PIL转回cv2
    cv2charimg = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)
    return cv2charimg

OpenCV视频处理

使用opencv对图片、摄像头视频等进行操作
在图片/上画图,画框,写字等操作
注意:opencv的宽高(wh),色彩(R G B)和常规的写法都是相反的!是(h w)和(B G R)

OpenCv门禁系统的操作步骤
①记录(拍照)、
②训练(使用opencv增强包中的自动训练)、
③识别(传入+识别)

备忘:代码在D:\AI学习\PycharmProjects_Week4\Day15_opencv\face_self中

flask本地web服务器

flask模组,一个可以用Python搭建web服务器的模组
可以实现表单数值传递、文件传输、cookie/ session操作等

cookie/ session的区别

cookie会一直保存在本地较长的时间、
而session会在[服务器-用户]停止交互一段时间之后自动删除

高数基础与“梯度下降”

高数基础:

函数的饱和性:应变量(y)有无范围

AI的概念中:
梯度=斜率=导数
(仅仅便于理解)

导数 偏导数 梯度视频:
https://www.bilibili.com/video/BV1i54y1B7Tk

神经网络的最小神经元:w*X + b (w,b就是他的权重)

深度学习要做到的就是:有标准(满分)的监督学习
这一点靠loss损失来控制

一个使用"梯度下降"和loss(损失)控制实现的,计算拟合回归曲线的案例

import random
import matplotlib.pyplot as plt
# 梯度下降法,求解: 求loss最小时、w的输出
_x = [i / 100 for i in range(100)]  # 0.1 -- 0.99的列表
# 线性回归到 w=3 b=10
_y = [3 * e + 10 + random.random() for e in _x]  # e来自列表_x,此列表表示
w = random.random()
b = random.random()
#绘制散点图
plt.scatter(_x, _y)
#显示
plt.savefig("4.jpg")
print(_x)
print(_y)
print(w)
print(b)
plt.ion()  # 开始动画
for i in range(100):
    for x,y in zip(_x, _y):
        # xW+B=h   W、B:权重
        # loss=(y-h)**2  loss:损失
        z = x * w + b
        loss = (z - y) ** 2
        # 对w,b求导数,而且是复合函数求导
        # 梯度下降法,加 - 号
        dw = -2*(z-y)*x  # 就是导数,希望w往这个方向下降
        db = -2*(z-y)
        w = w + 0.01 * dw  # 一条以新的导数(斜率)算出来的
        b = b + 0.01 * db
        print(loss)
        print(w, b)
    plt.cla()  # 清屏
    plt.plot(_x, _y, ".")
    v = [w * e + b for e in _x]
    plt.plot(_x, v)
    plt.pause(0.01)
plt.ioff()
plt.show()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值