• 第5次实践作业


    通过容器完成简单helloworld、日历输出、mysql数据库操作、opencv程序的部署运行

    1.项目结构

    2.搭建python镜像

    (1)requirements.txt

    PyMySQL
    opencv-python
    

    (2)Dockerfile

    FROM python:3
    WORKDIR /usr/src/app   
    COPY requirements.txt ./
    RUN pip install -r requirements.txt -i https://pypi.douban.com/simple  
    COPY app/helloworld.py /usr/src/app/   
    VOLUME /usr/src/app
    ENTRYPOINT ["python"]    
    CMD ["helloworld.py"]   
    

    (3)搭建镜像

    3.运行Python程序

    (1)helloworld
    print('Hello World!')

    (2)日历输出

    import calendar
    yy = int(input("输入年份: "))
    mm = int(input("输入月份: "))
    print(calendar.month(yy,mm))
    


    (3)mysql数据库操作

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect("sql", "docker", "123456", "docker_mysql")
    
    # 第一个参数是本地容器名字
    # 第二三个参数是数据库的使用用户与密码
    # 第四个参数是数据库名称
    # 创建游标对象
    
    cursor = db.cursor()
    # 先查询一次数据库数据
    sql = """select * FROM test"""
    cursor.execute(sql)
    results = cursor.fetchall()
    print(results)
    
    # SQL插入语句
    sql = """insert test(id,name)
    	values('031702526','zh')"""
    cursor.execute(sql)
    db.commit()
    
    # 插入完成后再读取一次数据库数据
    sql = """select * FROM test"""
    cursor.execute(sql)
    results = cursor.fetchall()
    print(results)
    
    # 关闭数据库连接
    db.close()
    


    (4)opencv程序的部署运行

    import cv2
    
    # flags传入0表示灰度图像, 1表示彩色图像
    img=cv2.imread('test.jpg',flags=1)
    
    # 获取图片尺寸
    rows,cols=img.shape[:2]
    
    # 这里的第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
    # 可以通过设置旋转中心,缩放因子,以及窗口大小来防止旋转后超出边界的问题
    M=cv2.getRotationMatrix2D((cols/2,rows/2),90,1)
    
    # 第三个参数是输出图像的尺寸中心
    dst=cv2.warpAffine(img,M,(cols,rows))
    
    # 写入文件
    cv2.imwrite("test-rotated.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
    print('rotated and saved.')
    


    原图:

    结果图:

    4.遇到的问题和解决办法

    (1)搭建镜像不成功

    忘记在最后加上 .
    (2)数据库连接不成功
    找不到之前实验的容器,将之前mysql实验重新做了一次
    (3)这次实验比上次实验要轻松许多,花了一个下午来进行实验,遇到的问题也通过问同学一一解决了

  • 相关阅读:
    js鼠标右键菜单
    js变量作用域好玩的东东
    清除浮动
    http通信示例Httpclient和HttpServer
    sql复杂案例
    微信小程序(小游戏)后台开发
    自动授时同步NTP时钟之NTP农历源代码算法立显电子技术部宣
    NTP同步时钟系统的实现及局域网授时方法
    modbus协议显示屏|modbus通讯显示屏|modbus显示电子屏功能码实现代码分享
    带掉电记忆功能的LED时钟代码分享
  • 原文地址:https://www.cnblogs.com/fzuzh/p/12925470.html
Copyright © 2020-2023  润新知