第一篇章:机缘👑
”我打开了CSDN,被里面浩瀚的技术积累深深吸引。“
” 陈著玉麟堂上神仙,算来便合归廊庙。“
说起机缘,我们不得不提一下,我们为何要写博客?这并非一个困难的问题,我们能轻易想到很多原因,这些话无非浓缩成几个字:
“ 如果我们写博客会发生什么?"
- 笔记恢复力:相信大家都有过这样的经历:我们好不容易学会一个很困难的知识点并且完成了有关项目,但是过了几个月我们就忘得差不多了。如果我们写博客,首先和别人讲可以起到巩固知识的作用,其次和别人交流可以让我们理解的更加深刻,最后当我们忘记知识的时候,看自己写的绝对是回复当初水平最快捷的方式。
- 建立自己的影响力:通过写博客,不少人能够成为影响十几万IT人甚至是几百万的程度,以后我们的后辈都可以通过博客来了解,哦,原来我的前辈写过这么多对大家有帮助的文章,这不免是非常骄傲的,更可以激励身边的人前进。
- 建立自己的技术积累仓:现在的博客不仅仅是一个简单的博客,还包括了资源仓、代码仓等等等,我们可以免费的把我们曾经的技术积累放到CSDN博客上面来,以后碰到了类似的项目,可以直接登录CSDN,从我们的仓库中拉取所需的技术资源。
第二篇章:对日常的影响🎈
熟悉我博客的都知道,我开源了好几个项目和数据集,每天都络绎不绝的有人需要这几份资源,所以我的日常最大的一个变化就是:我得每天抽出时间登录CSDN,给大家发送资源。收获大家一声声感谢,是对我莫大的鼓励。多的时候一天可以收获到有十几二十个人的感谢,每天如此。幸福感爆棚啊,有木有。。。
除此之外,我的
第三篇章:成就🎈
”合格的spy。不解释。“
要说成就的话,通过写博客,我收获了的东西不言而喻,但主要是两点:
- 竞赛复习:前面也说过”看自己的文章是恢复最初水平最快的方式“,我蓝桥杯看自己的文章复习只花了两天的时间就在公认最难题目的之一的某届中轻松拿到了省一。但因为实习工作已经找到了,就没有接着比赛下去了,是个遗憾...
- 毫无疑问就是实习了:实习面试中,面试官看到我们有几个w的粉丝,这不得高低多看你一眼。所以说嘛,我现在在做算法实习生,发了两个月工资,工资嘛,不太好透露,但是我是挺满意的。想知道的,砸门私底下说。哈哈哈....
- 写到这里才想到其实还有第3点啦。啊哈哈,就是我们平时做项目呀,他会分成很多个小项目,可能这其中的子项目之前就放在博客中呢?也就是我们积累的技术仓,那不就直接拿出来用嘛,啊哈哈,工作量够的话,还可以作为毕设去卖,多好一件事情儿。
至于上面的Spy截图大家图一乐就好,是一种新奇的写博客方式,挺好玩的,啊哈哈哈,有兴趣的话就来捧捧场咯!
欸,这个代码真挺好用的,出自(6条消息) 【Opencv工程开发所用类】能完美嵌入目标检测、语义分割等计算机视觉任务的视频摄像头类_opencv用什么摄像头_大气层煮月亮的博客-CSDN博客
# --time**2022.8.13
# --** worker:江子良
import cv2
import time
import torch
import warnings
import numpy as np
from PIL import Image
from loguru import logger
import os
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
class VideoTracker(object):
def __init__(self, cam=-1, video_path='', save_path='', use_frame=[0, -1], display=True):
self.display = display
self.use_frame = use_frame
self.video_path = video_path
self.cam = cam
if self.cam != -1:
print("Using webcam :" + str(self.cam))
self.vdo = cv2.VideoCapture(self.cam)
else:
print("Using video :" + str(self.video_path))
self.vdo = cv2.VideoCapture()
self.save_path = save_path
self.frame_interval = 1
self.use_cuda = True
use_cuda = self.use_cuda and torch.cuda.is_available()
if not use_cuda:
warnings.warn("Running in cpu mode which maybe very slow!", UserWarning)
def __enter__(self):
if self.cam != -1:
ret, frame = self.vdo.read()
assert ret, "Error: Camera error"
self.im_width = frame.shape[0]
self.im_height = frame.shape[1]
self.count_frame = int(-1)
else:
assert os.path.isfile(self.video_path), "Path error"
self.vdo.open(self.video_path)
self.im_width = int(self.vdo.get(cv2.CAP_PROP_FRAME_WIDTH))
self.im_height = int(self.vdo.get(cv2.CAP_PROP_FRAME_HEIGHT))
self.count_frame = int(self.vdo.get(cv2.CAP_PROP_FRAME_COUNT))
assert self.vdo.isOpened()
if self.save_path != '':
os.makedirs(self.save_path, exist_ok=True)
# path of saved video and results
self.save_video_path = os.path.join(self.save_path, "results.avi")
# create video writer
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
self.writer = cv2.VideoWriter(self.save_video_path, fourcc, 24, (self.im_width, self.im_height))
# logging
logger.info("Save results to {}".format(self.save_path))
return self
def __exit__(self, exc_type, exc_value, exc_traceback):
if exc_type:
print(exc_type, exc_value, exc_traceback)
def run(self):
idx_frame = 0
all_costTime = 0
while self.vdo.grab():
idx_frame += 1
if idx_frame % self.frame_interval:
continue
if idx_frame < self.use_frame[0]:
continue
if idx_frame > self.use_frame[1] and self.use_frame[1] != -1:
break
start = time.time()
ref, ori_im = self.vdo.retrieve()
if ref is True:
# start your code from here
# -----------end-----------
if self.display:
cv2.imshow("frame", ori_im)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
if self.save_path:
self.writer.write(ori_im)
# logging
end = time.time()
all_costTime += end - start
if self.display:
if self.cam != -1:
logger.info("frame schedule:<{}/-1> ({:.2f} ms), fps: {:.03f}"
.format(idx_frame, end - start, 1 / (end - start)))
else:
logger.info("frame schedule:<{}/{}> ({:.2f} ms), fps: {:.03f}"
.format(idx_frame, self.count_frame, end - start, 1 / (end - start)))
logger.info("ALL_COST_TIME:{:.3f}s".format(all_costTime))
第四篇章:憧憬🎈
”攒钱,然后找到喜欢的人,和她一起环游世界!“
钱很重要,觉得钱不重要的,要么是小屁孩,要么是富二代。所以我非常憧憬有一天我可以手握好几百个W,让自己和自己身边的人过上更好的生活。暂时只能写这么多了....溜去板砖了