首页 生活杂谈

20-10、11月小记


参加交通运输科技大赛

在十月初自己应老师的要求参加交通运输科技大赛,在这次比赛准备中,老师安排了三个学弟学妹和我组成一个团队,我怕自己不行,就带上了一起参加数学建模的一个朋友,老师安排学弟学妹的意思应该是让我带他(她)们学习。
首先老师通知的比较晚,加上自己本身水平不足,学弟学妹们也没接触过比赛方面,看论文还不会,相关知识储备不足。而且我也没有什么领导能力,没办法规划和调节好队员的工作。最后工作很乱,基本由我一人完成,很累。,最后准备时间不足,学校也没时间组织校内答辩等,寥寥草草的就上交了,最后结果在我的意料之内没任何奖项。
从这个比赛中知道自己水平严重不足,需要继续努力,也知道自己的领导能力不足,以后要注意没有金刚钻,不揽瓷器活。

创新创业项目试验

比赛忙完后就投入自己参加的创新创业项目之中,因为要还原疫情等场景,进行了两周的艰难采购,采购物品很好买到,真正困难的学校报销不易,来来回回十分折腾很难。

基本物资采购后,需要开始搭建模拟场景,因为已经提前设计好相关的布局和采用什么样的材料,因此场景搭建只用了一天完成。


场景布局图

开始进行为期两天的实验,这两天从早到晚,两点一线只在实验室和宿舍,课也没上,整天就希望这赶紧结束,最后大概实验了三百名志愿者并记录下实验数据和相关的个人信息,并为二轮实验进行筛选人员。

身穿防护服
实验过程图

python登记数据

因为学校的皮肤电测试仪不能导出数据只能显示实时的数据,应老师要求只能通过录视频的方法记录了,但给后期的读取造成了困扰,每个人大概有5分钟的数据记录,数据每0.5或1秒变动一次,一个人最少也要300个数据,单纯的靠人力去看视频并记录太过困难。
因此我的预期设想是共写两个程序,一个程序视频每隔0.5秒进行截图。另一个程序通过百度文字识别api来识别文字从而提取出我们需要的数据,因为视频拍摄过程问题,所以最后大概减少了一半的工作量。
第一个程序如下:
(程序大部分采用网上搜索到的代码,并进行修改)

# 导入所需要的库
from cv2 import cv2
import numpy as np
import os

# 定义保存图片函数
# image:要保存的图片名字
# addr;图片地址与相片名字的前部分
# num: 相片,名字的后缀。int 类型
def save_image(image,addr,num):
    address = addr + str(num)+ '.jpg'
    #print(address)
    cv2.imwrite(address,image)
    #视频如果是反的则用下面代码
    #cv2.imwrite(address,cv2.flip(image, -1))
path='D:/all/shipin/'
# 读取视频文件
for it in os.listdir(path):
    videoCapture = cv2.VideoCapture(path+it)
    # 通过摄像头的方式
    # videoCapture=cv2.VideoCapture(1)
    #读帧
    success, frame = videoCapture.read()
    i = 0
    timeF = 15
    j=0
    while success :
        i = i + 1
        if (i % timeF == 0):
            j = j + 1
            if not os.path.exists(f'D:/all/imgs/{os.path.splitext(it)[0]}'):
                os.mkdir(f'D:/all/imgs/{os.path.splitext(it)[0]}')
            save_image(frame,f'D:/all/imgs/{os.path.splitext(it)[0]}/',j)
        success, frame = videoCapture.read()
    print(f'{os.path.splitext(it)[0]}截图完毕')
    

第二个程序:

from aip import AipOcr #百度api
import os
import csv
import time
""" 你的 APPID AK SK """
APP_ID = '#######'
API_KEY = '########'
SECRET_KEY = '#########'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
path='D:/all/img/'
path1='D:/all/excel/'
""" 读取图片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
for it in os.listdir(path):
    file=path1+os.path.splitext(it)[0]+'.csv'
    #print(file)
    num=len(os.listdir(path+os.path.splitext(it)[0]))
    if not os.path.exists(file):     
        print(os.path.splitext(it)[0]+'.csv创建并填写')
        y=1
    else:
        with open(file, 'r') as f:
            line=f.readlines()
        if num<=len(line):
            print(os.path.splitext(it)[0]+'.csv已经完整')
            continue
        else:
            y=len(line)+1
            print(os.path.splitext(it)[0]+'.csv继续完善')
    csv_list=[]
    for i in range(y,num+1):
        try:
            image = get_file_content(path+os.path.splitext(it)[0]+'/'+str(i)+'.jpg')
            """ 调用通用文字识别, 图片参数为本地图片 """
            dic=client.basicGeneral(image)
            if 'words_result'  in dic:
                for j in dic['words_result']:
                    try:
                        words=int(j['words'])
                        if words<=999 and words >=100:
                            #print(i,words)
                            csv_list.append([i,words])
                            break
                    except:
                        pass
                else:
                    #print(csv_list)
                    csv_list.append([i,''])
            else:
                    #print(csv_list)
                    csv_list.append([i,''])
        except:
            csv_list.append([i,''])


        if i%10==0 or i==num:
            print(f'{os.path.splitext(it)[0]}.csv,已经完成{i},总共{num},剩余{num-i}')
            with open(path1+os.path.splitext(it)[0]+'.csv','a+',newline='') as f:
                csv.writer(f).writerows(csv_list)
            csv_list=[]
    print(f'{os.path.splitext(it)[0]}.csv已经完成')

指点天下自动打卡和签到

其实这个在之前的两个文章都提到过,但为了照顾同学的使用,因此进行多次升级并通过flask搭建了一个自助提交的网站,方便快捷的使用。
主程序主要升级内容有:

  1. 支持针对不定期的签到,支持循环监测。
  2. 通过判断是否请假等来监测是否有签到。
  3. 支持多学校使用。
  4. token过期前三天提前提醒
  5. 高德api通过经维度反查地址

自助提交系统功能;

  1. 支持更新token、经维度、签到打卡状态
  2. 支持新用户自助提交
  3. 支持经维度互转
  4. 支持用户信息查询
  5. 信息更改均会提醒。

因为大部分用不上,所以设置一下隐藏,回复即可见自助系统链接:

此处内容需要评论回复后方可阅读

总结:

这两个月的空闲时间都在编程、创新创业和比赛中度过,都忘记给博客除草了,但一直没忘记去浏览友联的博客和其他博客。十二月份早就想写前两个月的记录了,但因为考试就在眼下所以迟迟没有去写,这周刚刚考完4个科目,有了空闲时间,于是就写下了10月11月的小记。
12月即将结束,在12月里有一件有趣的事正在发生,具体结果还未知。预计在下个月放假之后更新,敬请期待。




文章评论

目录