李尚杰的第一次作业

news/2024/9/19 19:46:08
这次作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc
这个作业的目标 熟悉博客的建立,向老师/助教介绍自己并阐述对课程的期待
姓名-学号 李尚杰-2022329301146

一、个人简介

(一)基本介绍

  我叫李尚杰,来自22自动化1班,浙江杭州人。我爱好摄影、旅游、看电影、健身,热衷于到处看世界也热衷于丰富自己。在过去的两年生活中,我遇到了很多朋友,也结识了许多师长前辈,通过一点一滴的积累,不断向着更好的自己迈进。

重庆洪崖洞的夜景
旭日东升时的宝石山山顶

(二)学习经历

  • 坎坷比赛路

  步入大学,我从一开始便对自己严格要求,早早的加入了15-234浙理-Mov堡实验室,并跟随实验室的学长学姐,参加了诸多专业相关的比赛,例如电子设计竞赛,机器人竞赛,工程训练大赛等,在这过程中,我充分利用专业课学习到的知识,将其在比赛中实践。


两年电赛通宵时所摄

   或许遗憾才是比赛的主旋律,当看到自己辛苦准备许久的作品没能在比赛场达到他应有的水平时,无力感不断地袭来,一次次的安慰自己下次会更好却不知道下次什么时候到来,尽管两年的比赛生涯不尽人意,我仍然享受每一个调车的夜晚,正如我的实验室好友DC所说,“着眼于比赛的过程,而不要着眼于结果”

电赛代码节选
import cv2
import numpy as np
import serial  
import time ser = serial.Serial('/dev/ttyAMA0',115200)def side_judge(board_x,board_y):side = 0error_x = 0error_y = 0put_cx = 320 - 5put_cy = 240 + 20if board_x>=put_cx and board_y<=put_cy:side = 1error_x = board_x - put_cxerror_y = put_cy - board_yif board_x<=put_cx and board_y<=put_cy:side = 2error_x = put_cx - board_xerror_y = put_cy - board_yif board_x<=put_cx and board_y>=put_cy:side = 3error_x = put_cx - board_xerror_y = board_y - put_cyif board_x>=put_cx and board_y>=put_cy:side = 4error_x = board_x - put_cxerror_y = board_y - put_cyif error_x > 255:error_x = 255elif error_x < 0:error_x = 0if error_y > 255:error_y = 255elif error_y < 0:error_y = 0return side, error_x, error_ydef adaptiveThreshold(img,kernelsize):# 自适应阈值处理ratio = 0.018  # 自适应阈值比率img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)imgBlur = cv2.boxFilter(img, -1, (kernelsize, kernelsize))  # 盒式滤波器,均值平滑localThresh = img - (1.0-ratio) * imgBlurbinaryBox = np.ones_like(img) * 255  # 创建与 img 相同形状的白色图像binaryBox[localThresh<0] = 0kSize = (3, 3)  # 卷积核的尺寸kernel = np.ones(kSize, dtype=np.uint8)  # 生成盒式卷积核imgDilate1 = cv2.dilate(binaryBox, kernel=kernel)  # 图像膨胀kSize = (4, 4)  # 卷积核的尺寸kernel = np.ones(kSize, dtype=np.uint8)  # 生成盒式卷积核imgErode1 = cv2.erode(imgDilate1, kernel=kernel)  # 图像腐蚀blur = cv2.medianBlur(imgErode1, 7)              # 中值滤波return blurdef circle_detect(img):count = 5total_x = 0total_y = 0circle_threshold = 60while(count > 0):img_draw = img.copy()gray = adaptiveThreshold(img,11)edges = cv2.Canny(gray, 50, 150)cv2.imshow("edges", edges)circles = cv2.HoughCircles(edges, method=cv2.HOUGH_GRADIENT,dp=1, minDist=25, param1=100, param2=circle_threshold,minRadius=80, maxRadius=120)if circles is not None:circles = np.uint16(np.around(circles))circle = circles[0, 0, :]cv2.circle(img_draw, (circle[0], circle[1]), circle[2], (0,255,0), 2)cv2.circle(img_draw, (circle[0], circle[1]), 2, (0, 0, 255), 3)cv2.imshow("image", img_draw)x, y = circle[0], circle[1]total_x = total_x + xtotal_y = total_y + ycount -= 1else:if circle_threshold>10:circle_threshold-=10else:passside, error_x, error_y = side_judge(int(total_x/5),int(total_y/5))print(side, error_x, error_y)return side, error_x, error_ydef color_detect(frame):
#-------------------HSV色域--------------------## 红色色域lower_red = np.array([0, 100, 100])upper_red = np.array([60, 255, 255])lower_red2 = np.array([140, 100, 100])upper_red2 = np.array([255, 255, 255])# 绿色色域lower_green = np.array([60, 100, 100])upper_green = np.array([90, 255, 255])# 蓝色色域lower_blue = np.array([90, 100, 100])upper_blue = np.array([140, 255, 255])
#--------------------------------------------#kSize = (9, 9)  # 卷积核的尺寸kernel = np.ones(kSize, dtype=np.uint8)  # 生成盒式卷积核img = cv2.dilate(frame, kernel=kernel)  # 图像膨胀hsv_frame = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)height, width, _ = hsv_frame.shapeframe = hsv_frame[0:height, 0:int(5*width/12)] red_mask = cv2.inRange(frame, lower_red, upper_red)red_mask2 = cv2.inRange(frame, lower_red2, upper_red2)red_mask = cv2.bitwise_or(red_mask, red_mask2)green_mask = cv2.inRange(frame, lower_green, upper_green)blue_mask = cv2.inRange(frame, lower_blue, upper_blue)kernel = np.ones((5, 5), np.uint8)red_mask = cv2.morphologyEx(red_mask, cv2.MORPH_OPEN, kernel)green_mask = cv2.morphologyEx(green_mask, cv2.MORPH_OPEN, kernel)blue_mask = cv2.morphologyEx(blue_mask, cv2.MORPH_OPEN, kernel)red_pixels = cv2.countNonZero(red_mask)green_pixels = cv2.countNonZero(green_mask)blue_pixels = cv2.countNonZero(blue_mask)threshold = frame.shape[0] * frame.shape[1]  * (1/4)if red_pixels > threshold:print("red")return 1    #redelif green_pixels > threshold:print("green")return 2    #greenelif blue_pixels > threshold:print("blue")return 3    #blueelse:print("no color")return 0#---------------------------主循环代码--------------------------#
cap = cv2.VideoCapture(0)
cap.set(3, 640)  
cap.set(4, 480)
side = 0
err_x = 0
err_y = 0
task = 0 
flag = 0while True:ret, frame = cap.read()count = ser.inWaiting()if count > 0:rdata = ser.read(count)rdata = rdata.decode("UTF-8")print("收到的值为", rdata)if rdata == '1':# 任务1:识别颜色    cv2.imshow("image", frame)      color = color_detect(frame)sdata = bytearray([0x2C, 0x12, 0x01, color, 0, 0, 0 ,0xff])ser.write(sdata)if cv2.waitKey(1) & 0xFF == ord('q'):breakif rdata == '2':# 任务2:识别圆形轮廓cv2.imshow("image", frame)side, error_x, error_y = circle_detect(frame)sdata = bytearray([0x2C, 0x12, 0x02, 0, side, error_x, error_y ,0xff])ser.write(sdata)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()
  • 小白科研路

   比赛之余,我也积极参与科研项目,在长达一年的项目周期里,我也从代码零基础、实验零基础的小白逐渐成长为能够为别人答疑解惑的学长,并在自己的专业方向有了自己的理解。科研之于我的意义不仅仅在于提出创新、收获成果,更是磨砺心性、不断探索的一条道路,幸运的是,有许多师长为我指明方向,让我能够在这条路上找到一个前进的目标,我也相信,终有一天像我这样的小白也会拥有足以让自己骄傲的成绩。

(三)生活经历

  在生活中,我是一个乐观开朗的人,与人和善,说话坦率。我爱好旅游、摄影,喜欢记录生活中有趣的小事。我和同学师长都保持十分良好的关系,他们教会了我许多,不仅是专业知识,更是对未来、人生的看法。同时,我也热衷于与各种不同职业不同年龄的人聊天,倾听不同的声音了解不同的看法,这是我认识世界的一种方式,也是完善自我的一种方式,正如杨绛先生所说,“你读过的书,遇过的人,构成了你的人生格局”,理工科的学生并不应该终日在实验室度过,往外走走经常能够发现新的乐趣。

镇江旅游时所摄
结课后与马上退休的Julie老师合影
与室友一起吃烤肉

  不是每个人都有机会和自己的偶像合影,而我则是在一次偶然的机会追星成功。前不久去浙大找朋友时偶遇了东京奥运会女子平衡木项目的奥运冠军--管晨辰,于是便上前与之合照。

  尽管在后来和同学交谈炫耀的过程中,我发现并不是所有同学都听说过当年火出圈的“袋鼠摇”,她仍然是我非常崇拜的一名运动员。不仅仅因为她是奥运冠军,在她自己擅长的领域做到了最好,更因为她乐观、坚韧的性格所带来的无与伦比的个人魅力。退役后发福仍在网络平台分享生活招致的许多无端嘲讽,在自己曾经最擅长项目上今非昔比带来的巨大落差,我没法想象她是否也经历了自我内耗的煎熬,作为一个曾经的奥运冠军,这些压力在她身上愈发放大。尽管如此,她仍是选择坦然的面对,毫不掩饰的直面这些外人看来难以克服的心魔,这也为曾经迷茫的我带来了很多鼓励。

二、自我评估

(一)掌握的专业技能与知识

  • 学习并基本掌握电路原理、模电数电、自动控制原理等课程的内容;
  • 能够基于C语言实现对STC51、STM32、MSP430等型号单片机的开发;
  • 能够使用相关EDA完成对于原理图、PCB的绘制,并进行简单的电路仿真;
  • 了解Linux系统的基础操作,能够通过基本的命令行控制实现图像处理任务的移动端部署;
  • 熟悉Python语言进行机器视觉、深度学习项目的开发。
课设制作的雪花灯
实验所得的结果

(二)感兴趣的技术方向

  • 人工智能相关
  • 机器人学(ROS、SLAM等)
  • 操作系统相关

(三)缺乏的能力

  • 对于机械结构方面的认识较少,不擅长做硬件设计;
  • 缺少电力电子、电能转换等相关知识储备,对电的理解较浅;
  • 缺乏自制力与专注力,完成长周期任务的效率较低;
  • 英语能力较为薄弱。

三、对课程的展望

  在本学期的软件技术基础课中,我希望能够跟随杨老师以及助教老师完成所有的课程目标,积极认真的去对待每一次的作业并取得优异的成绩,并从本次课程中得到收获:

  1. 系统性学习软件技术的基础理论,结合实践案例与项目巩固所学,加深对于软件开发、测试维护等相关内容的理解;
  2. 通过小组合作培养团队协作能力,提升与他人沟通交流的能力,让自己的成果能够与别人的成果相配合,最终达到1+1>2的效果,也为未来进入企业打下基础;
  3. 通过课程安排与杨老师上课时的介绍,进一步了解相关行业的就业方面,熟悉现代软件开发的相关背景与实际操作内容。

  同时,我希望在课程实践中担当一个“学习者”与“引领者”的定位,通过自己不断的学习与巩固,了解课程相关内容与实践操作方法,并将自己所学到的内容分享给其他的同学,引领他们去更好的完成课程任务,这个过程不仅帮助了其他同学,也是对自己的提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/61129.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

数木莫系且的旭酱买水问题

dut开区用,在别的情况下该博客无效数木莫系且的旭酱买水问题 创中的招新又双叒叕开始了,“数木莫系且”要开始出招新题了,“数木莫系且”的36位老东西为了想招新题整天废寝忘食、绞尽脑汁、抓耳挠腮、呕心沥血,甚至连水都忘记喝了。“数木莫系且“的不时用日语小声发癫的旭…

字符编码发展史1 — ASCII和EASCII

1. 字符集与字符编码1.1. 字符集 1.2. 字符编码 1.3. 两者的关系2. 字符编码的发展历史2.1. 第一个阶段 ASCII编码2.1.1. ASCII 2.1.2. EASCII1. 字符集与字符编码 1.1. 字符集 字符集(Charcater Set或Charset): 是一个系统支持的所有抽象字符的集合,也就是一系列字符的集合…

[JVM]对象创建过程

Java 对象的创建过程 Java对象创建的过程主要分为五个步骤,下面我将详细介绍这五个步骤。 Step1:类加载检查 虚拟机遇到一条new指令时,首先会去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且会检查这个符号引用所指向的类是否已经完成加载、连接和初始化,…

教小模型进行推理

https://arxiv.org/abs/2212.08410 思维链提示在基础层面上是如此成功,以至于它产生了一些被称为 x 链现象的东西。谷歌研究院探索了如何使用 llm 为现有数据集生成 CoT 数据本体,然后如何在 CoT 上微调较小的语言模型。 介绍 众所周知,思维链提示提高了大型语言模型的推理能…

[WesternCTF2018]shrine

打开题目就得到了python代码 import flask import os #导包 app = flask.Flask(__name__) #创建一个flask实例, app.config[FLAG] = os.environ.pop(FLAG) #从操作系统的环境变量中读取名为FLAG的值,并将其存储在Flask的配置中,POP:读取后删除该环境变量@app.route(/) #定义…

MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法

原文:MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法 参考:Connection Java - MySQL : Public Key Retrieval is not allowed在使用 MySQL 8.0 时重启应用后提示com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieva…