(六)图像背景移除/去背景/换背景/抠图/抠像代码示例:AI实时抠图、AI实时抠像、PaddlePaddle模型、虚拟现实视频会议、沉浸式会议场景、人像去背景、视频背景消除、摄像头背景移除

本文与前几篇博文关联性较强,请事先阅读前几篇。 对此文感兴趣的可以加微深入探讨:herbert156
软件打包上传了百度网盘:
【视频背景移除】链接: https://pan.baidu.com/s/1Dhr7MHkGd8vlXfyETrK3xQ 提取码: 29n2
【图像背景移除】链接: https://pan.baidu.com/s/1nhuWMYWvTV3B0d0CdGDhFQ 提取码: q46x
【摄像头背景移除】链接: https://pan.baidu.com/s/1tx88C3dCH3ej3PJcKLDmdQ 提取码: g7xy

一、图片抠图
代码主要功能是:图像背景移除、去背景、人像抠图、换背景等,主要包括:
1、对人像图片进行抠图,可以存成PNG格式的透明图片,也可选择替换背景(可选择替换成纯色的、也可选替换成指定背景图片);
2、可以批量抠图,在选择文件的对话框里可以选择多个文件,同时抠图、批量操作;
3、软件设置里可以设置使用GPU处理还是CPU处理,软件只支持英伟达(Nvidia)的GTX/RTX系列的GPU;
4、抠图算法的模型有复杂模型和简易模型,可以根据原始图片的背景复杂度随意选择。

二、图片抠图代码

def image_change_background(self, imagefile, backfile):global bg_file, iii, stop_flag, t0#try:  img2= cv2.imread(imagefile)  # 读取文件try:img2= cv2.imdecode(np.fromfile(imagefile, dtype=np.uint8), -1)if img2.shape[2] == 4: img2 = cv2.cvtColor(img2, cv2.COLOR_BGRA2BGR)except: self.show_error('读取图片文件【'+imagefile+'】时,出现错误!\n\n原因:目录/文件名不能包含中文......'); returnif img2 is None: self.show_error('读取图片文件【'+imagefile+'】时,出现错误!\n\n原因:目录/文件名不能包含中文......'); returnsize_x = img2.shape[1]  # 宽度size_y = img2.shape[0]  # 高度imageinfo = '【图片信息】 文件总数:%d | 正在处理(%d/%d):'%(filesnums,iii,filesnums) + os.path.split(imagefile)[1]+\' | 图像分辨率:%dx%d '%(size_x,size_y)self.txt11.setText(imageinfo)img1 = cv2.resize(backfile, (size_x, size_y))t1 = time.time()if size_x / size_y > 1.778: fx = 427 / size_x; fy = fx   # 计算16:9的比例,以便缩放不变形else: fx = 240 / size_y; fy = fxif stop_flag:self.txt11.setText('【视频信息】 文件总数:%d个 | 处理完成:%d个' % (filesnums, iii))self.txt12.setText('【运行信息】 用户终止了正在运行的程序......')returnimg3 = self.koutu(img2)#img3 = cv2.cvtColor(img2.copy(), cv2.COLOR_BGR2BGRA)   #测试用语句png_name = out_dir+'/'+os.path.splitext(os.path.split(imagefile)[1])[0]+'_1.png'#cv2.imwrite(png_name,img3)cv2.imencode('.png', img3)[1].tofile(png_name)if not only_png:img4 = self.two_pic_combine_PIL(img1,img3)     #img1:背景文件;img2:源文件;img3:抠图文件;img4:合并背景文件if Box2_flag: self.my_label2.setPixmap(self.CvMatToQImage(cv2.resize(img4, (0, 0), fx=fx, fy=fy)))jpg_name = out_dir+'/'+os.path.splitext(os.path.split(imagefile)[1])[0]+'_1.jpg'#cv2.imwrite(jpg_name,img4)cv2.imencode('.jpg', img4)[1].tofile(jpg_name)else:if Box2_flag: self.my_label2.setPixmap(self.CvMatToQImage(cv2.resize(img3,(0,0),fx=fx,fy=fy)))if Box1_flag: self.my_label1.setPixmap(self.CvMatToQImage(cv2.resize(img2,(0,0),fx=fx,fy=fy)))cv2.waitKey(1); t2 = time.time()runinfo = '【运行信息】 当前图片处理耗时:%.3f秒 | 总处理耗时:%.1f秒 | 处理进度:%.1f%%'%((t2-t1),(t2-t0),100*(iii/filesnums))self.txt12.setText(runinfo);  cv2.waitKey(1)self.txt12.setText('【运行信息】 处理完毕!总消耗时间:%d秒'%(t2-t0))self.txt11.setText('【视频信息】 文件总数:%d个 | 处理完成:%d个'%(filesnums,iii))在这里插入代码片

三、界面操作代码

    def show_error(self,str):r_button = QMessageBox.question(self, my_title,'\n\n'+str+'\n\n', QMessageBox.Ok)def set_False_Btn(self):self.filesButton.setEnabled(False);       self.outButton.setEnabled(False)#self.bkfileButton.setEnabled(False);      #self.checkBox3.setEnabled(False)self.startButton.setEnabled(False);       self.stopButton.setEnabled(True)self.quitButton.setEnabled(False);        #self.checkBox3_0.setEnabled(False)def set_True_Btn(self):self.filesButton.setEnabled(True);       self.outButton.setEnabled(True)#self.bkfileButton.setEnabled(True);      #self.checkBox3.setEnabled(True)self.startButton.setEnabled(True);       self.stopButton.setEnabled(False)self.quitButton.setEnabled(True);        #self.checkBox3_0.setEnabled(True)def startrun(self):global iii,stop_flag,t0iii = 0; stop_flag = Falseself.txt12.setText('【运行信息】 正在初始化AI模型......');cv2.waitKey(1)t0 = time.time()if files == []: self.show_error('请选择需要抠图或替换背景的图像文件!'); returnif not os.path.exists(out_dir): self.show_error('输出目录不存在,请重新选择!'); returnself.set_False_Btn()if not Box3_flag and not only_png:#try: back_ground = cv2.imread(bg_file)  # 读取背景文件try: back_ground = cv2.imdecode(np.fromfile(bg_file, dtype=np.uint8), -1)except: self.show_error('读取背景文件时,出现错误!'); self.set_True_Btn(); returnif back_ground is None: self.show_error('读取背景文件时,出现错误!\n\n原因:文件不存在或文件名包含中文...... '); self.set_True_Btn(); returnelse: back_ground = bk_imgfor file in files:iii += 1if stop_flag: breakself.image_change_background(file, back_ground)self.set_True_Btn()#self.my_label1.setPixmap(QPixmap("ican_logo.png"))#self.my_label2.setPixmap(QPixmap("ican_logo.png"))def stoprun(self):global stop_flagr_button = QMessageBox.question(self, my_title, "\n\n    确定要停止替换背景吗?\n\n", QMessageBox.Yes | QMessageBox.No)if r_button == QMessageBox.Yes: stop_flag = Truedef helpWin(self):str="\n\n\n1、【选择文件】选择需要抠图、替换背景的图像文件;\n2、【输出目录】替换后的文件目录,文件名:源文件_1.mp4;\n"+\"3、【背景文件】选择后,人物图像的背景都被替换成此背景;\n4、【纯色背景】点选后,所有图片背景替换成纯色的;\n"+ \"5、可以选择只输出PNG透明文件或同时输出背景替换文件;\n" + \"6、如没有Nvidia系列GPU,就选CPU处理,AI需选【简易】;\n7、AI抠图算法有简易、复杂2种,可在软件设置栏目里面选择;\n\n\n"+\"      本软件著作权归属:XXX        网址:www.???.com\n\n"QMessageBox.question(self, my_title, str, QMessageBox.Ok)def quitWin(self):r_button = QMessageBox.question(self, my_title, "\n\n    退出将终止替换进程\n\n    确认退出吗?\n\n", QMessageBox.Yes | QMessageBox.No)if r_button == QMessageBox.Yes: sys.exit()def filesButton_fuc(self):global files,filesnumsfiles, ok1 = QFileDialog.getOpenFileNames(self,'请选择图像文件[全选:Ctrl+A、多选:Ctrl/Shift+鼠标]',input_path,"*.jpg;;*.png")filesnums = len(files)if files!=[]:txt='目录:'+os.path.split(files[0])[0]+' | 已选文件:'+str(filesnums)+'个 | 文件名:'for file in files: txt=txt+ os.path.split(file)[1]+'; 'self.txt1.setText(txt)else: self.txt1.setText('请选择图像文件[全选:Ctrl+A、多选:Ctrl/Shift+鼠标]......')def outButton_fuc(self):global out_dirout_dir = QFileDialog.getExistingDirectory(self,'选择转换后的输出文件夹', work_path)if out_dir == '': self.txt2.setText('请选择背景替换后文件保存目录......')else: self.txt2.setText(out_dir)def bkfileButton_fuc(self):global bg_filebg_file, ok1 = QFileDialog.getOpenFileName(self,"选择背景图片文件",work_path,"*.jpg;;*.png;;*.gif")if bg_file == '': self.txt3.setText('请选择背景图片文件......')else: self.txt3.setText(bg_file)def click_comboBox1(self, text):global if_use_gpu,if_good_modelif text == 'GPU':if GPU_memsize < 3 and self.comboBox2.currentIndex() == 1:self.show_error("\nGPU名称:%s\nGPU内存:%dG\n\n注意:\nGPU内存必须大于3G才能进行复杂AI模型,\n请选择简易模型!"%(GPU_name,GPU_memsize))self.comboBox2.setCurrentIndex(0);if_good_model = Falseif_use_gpu = Trueelse: if_use_gpu = Falsedef click_comboBox2(self, text):global if_good_model,if_use_gpuif text == '复杂':if GPU_memsize < 3 and self.comboBox1.currentIndex() == 1:self.show_error("\nGPU名称:%s\nGPU内存:%dG\n\n注意:\nGPU内存必须大于3G才能进行复杂AI模型,\n请选择简易模型或CPU处理!"% (GPU_name, GPU_memsize))self.comboBox1.setCurrentIndex(0);if_use_gpu = Falseif_good_model = Trueelse: if_good_model = Falsedef box_choose(self):global Box1_flag, Box2_flagif self.checkBox1.isChecked(): Box1_flag = Trueelse:Box1_flag = False;  self.my_label1.setPixmap(QPixmap("start_img.jpg"))if self.checkBox2.isChecked(): Box2_flag = Trueelse:Box2_flag = False;  self.my_label2.setPixmap(QPixmap("start_img.jpg"))def box_choose3_0(self):global only_pngif self.checkBox3_0.isChecked():self.txt3.setEnabled(False); self.bkfileButton.setEnabled(False)self.checkBox3.setEnabled(False)self.txt3.setText('只输出PNG透明文件,不更换背景......')only_png = Trueelse:self.txt3.setEnabled(True); self.bkfileButton.setEnabled(True)self.txt3.setText(bg_file); self.checkBox3.setEnabled(True)only_png = Falsedef box_choose3(self):global Box3_flagif self.checkBox3.isChecked():self.txt3.setEnabled(False); self.bkfileButton.setEnabled(False)self.txt3.setText('已经选择纯色背景......')self.set_rgb_True()Box3_flag = Trueelse:self.txt3.setEnabled(True);  self.bkfileButton.setEnabled(True)self.txt3.setText(bg_file)self.set_rgb_False()Box3_flag = False

四、界面布局代码

    def createLayout(self):mainLayout = QtWidgets.QVBoxLayout();topLayout1 = QtWidgets.QHBoxLayout();topLayout2 = QtWidgets.QHBoxLayout()topLayout3 = QtWidgets.QHBoxLayout();topLayout4 = QtWidgets.QHBoxLayout()self.my_label1 = QtWidgets.QLabel(); self.my_label2 = QtWidgets.QLabel()topLayout1.addWidget(self.my_label1); topLayout1.addWidget(self.my_label2)self.my_label1.setPixmap(QPixmap("start_img.jpg")); self.my_label2.setPixmap(QPixmap("start_img.jpg"))self.my_label1.setFixedSize(427, 240); self.my_label2.setFixedSize(427, 240)self.my_label1.setAlignment(Qt.AlignCenter); self.my_label2.setAlignment(Qt.AlignCenter)self.my_label1.setToolTip("本区域,显示的是原始图像缩略图..."); self.my_label2.setToolTip("本区域,显示的是替换后的缩略图...")self.GroupBox1 = QtWidgets.QGroupBox("软件设置")self.GroupBox1.setFixedSize(280, 60)self.lbl_1 = QtWidgets.QLabel("处理器:", self)self.lbl_1.setFixedSize(45, 25)self.comboBox1 = QtWidgets.QComboBox(self)self.comboBox1.setFixedSize(50, 25)self.comboBox1.addItem("CPU");  self.comboBox1.addItem("GPU")if if_use_gpu: self.comboBox1.setCurrentIndex(1)self.comboBox1.activated[str].connect(self.click_comboBox1)self.lbl_2 = QtWidgets.QLabel("AI算法:", self)self.lbl_2.setFixedSize(45, 25)self.comboBox2 = QtWidgets.QComboBox(self)self.comboBox2.setFixedSize(50, 25)self.comboBox2.addItem("简易"); self.comboBox2.addItem("复杂")if if_good_model:self.comboBox2.setCurrentIndex(1)self.comboBox2.activated[str].connect(self.click_comboBox2)GroupBox1Layout = QtWidgets.QHBoxLayout()GroupBox1Layout.addWidget(self.lbl_2)GroupBox1Layout.addWidget(self.comboBox2)GroupBox1Layout.addWidget(self.lbl_1)GroupBox1Layout.addWidget(self.comboBox1)self.GroupBox1.setLayout(GroupBox1Layout)if not if_use_gpu: self.comboBox1.setEnabled(False)self.GroupBox2 = QtWidgets.QGroupBox("显示设置")self.GroupBox2.setFixedSize(180, 60)self.checkBox1 = QtWidgets.QCheckBox("原始图像")self.checkBox2 = QtWidgets.QCheckBox("输出图像")GroupBox2Layout = QtWidgets.QHBoxLayout()GroupBox2Layout.addWidget(self.checkBox1)GroupBox2Layout.addWidget(self.checkBox2)self.GroupBox2.setLayout(GroupBox2Layout)self.checkBox1.stateChanged.connect(self.box_choose)self.checkBox2.stateChanged.connect(self.box_choose)self.checkBox1.setChecked(True); self.checkBox2.setChecked(True)self.GroupBox4 = QtWidgets.QGroupBox("文件设置")self.GroupBox4.setFixedSize(850, 160)self.filesButton = self.createButton("选择文件", self.filesButton_fuc)self.outButton = self.createButton("输出目录", self.outButton_fuc)self.bkfileButton = self.createButton("背景文件", self.bkfileButton_fuc)self.filesButton.setToolTip("选择即将被替换背景的图片文件,可单选、多选...")self.outButton.setToolTip("选择输出文件目录,替换后的文件将存在此目录...")self.bkfileButton.setToolTip("选择可用作背景的图片文件,建议分辨率:1920x1080...")self.filesButton.setFixedSize(80,23); self.outButton.setFixedSize(80,23)self.bkfileButton.setFixedSize(80,23)self.txt1 = QLabel('请选择图像文件[Ctrl+A全选、Ctrl/Shift+鼠标可多选]......', self); self.txt2 = QLabel('输出目录', self)self.txt3 = QLabel('背景文件', self); self.txt4 = QLabel('纯色文件', self)self.txt2.setText(out_dir);   self.txt3.setText(bg_file);self.txt4.setPixmap(self.CvMatToQImage(cv2.resize(bk_img, (50, 18))))self.checkBox3_0 = QtWidgets.QCheckBox("只输出PNG文件(不换背景)   ")self.checkBox3_0.setToolTip("勾选:只输出透明的PNG文件,不更换背景;\n不勾选:同时输出PNG文件和更换背景的文件。");self.checkBox3 = QtWidgets.QCheckBox("纯色背景")self.checkBox3_0.stateChanged.connect(self.box_choose3_0)self.checkBox3.stateChanged.connect(self.box_choose3)self.checkBox3_0.setChecked(True)self.red  = QLabel(' 红', self); self.green= QLabel('    绿', self); self.blue = QLabel('    蓝', self)self.red_e =   QLineEdit(self);    self.red_e.setText('8')self.green_e = QLineEdit(self);    self.green_e.setText('188')self.blue_e =  QLineEdit(self);    self.blue_e.setText('8')self.red_e.setValidator(QIntValidator(0, 254))self.green_e.setValidator(QIntValidator(0, 254))self.blue_e.setValidator(QIntValidator(0, 254))self.red_e.setFixedSize(28, 20);self.green_e.setFixedSize(28, 20);self.blue_e.setFixedSize(28, 20)self.red_e.textChanged[str].connect(self.red_e_fuc)self.green_e.textChanged[str].connect(self.green_e_fuc)self.blue_e.textChanged[str].connect(self.blue_e_fuc)layout_box1 = QtWidgets.QHBoxLayout()layout_box2 = QtWidgets.QHBoxLayout()layout_box3 = QtWidgets.QHBoxLayout()layout_box1.addWidget(self.filesButton, Qt.AlignLeft| Qt.AlignVCenter)layout_box1.addWidget(self.txt1, Qt.AlignLeft| Qt.AlignVCenter)layout_box2.addWidget(self.outButton)layout_box2.addWidget(self.txt2)layout_box2.addWidget(self.bkfileButton)layout_box2.addWidget(self.txt3)layout_box3.addWidget(self.checkBox3_0)layout_box3.addWidget(self.checkBox3)layout_box3.addWidget(self.txt4)layout_box3.addWidget(self.red)layout_box3.addWidget(self.red_e)layout_box3.addWidget(self.green)layout_box3.addWidget(self.green_e)layout_box3.addWidget(self.blue)layout_box3.addWidget(self.blue_e)layout_box3.addStretch(1)layout11 = QWidget();  layout21 = QWidget(); layout31 = QWidget()layout11.setLayout(layout_box1);  layout21.setLayout(layout_box2); layout31.setLayout(layout_box3)GroupBoxmainLayout = QtWidgets.QVBoxLayout()GroupBoxmainLayout.addWidget(layout11, Qt.AlignLeft | Qt.AlignVCenter)GroupBoxmainLayout.addWidget(layout21, Qt.AlignLeft | Qt.AlignVCenter)GroupBoxmainLayout.addWidget(layout31, Qt.AlignLeft | Qt.AlignVCenter)self.GroupBox4.setLayout(GroupBoxmainLayout)self.GroupBox5 = QtWidgets.QGroupBox("信息统计")self.GroupBox5.setFixedSize(850, 90)self.txt11 = QLabel('【图像信息】', self)self.txt12 = QLabel('【运行信息】', self)GroupBox5Layout = QtWidgets.QGridLayout()GroupBox5Layout.addWidget(self.txt11, 0, 1)GroupBox5Layout.addWidget(self.txt12, 1, 1)self.GroupBox5.setLayout(GroupBox5Layout)self.startButton = self.createButton("开始处理", self.startrun)self.stopButton = self.createButton("停止", self.stoprun)self.helpButton = self.createButton("帮助", self.helpWin)self.quitButton = self.createButton("退出", self.quitWin)self.startButton.setFixedSize(80,25)self.stopButton.setFixedSize(55, 25)self.helpButton.setFixedSize(55,25)self.quitButton.setFixedSize(55,25)topLayout2.addWidget(self.GroupBox4)topLayout3.addWidget(self.GroupBox5)topLayout4.addWidget(self.GroupBox1)topLayout4.addWidget(self.GroupBox2)topLayout4.addWidget(self.startButton)topLayout4.addWidget(self.stopButton)topLayout4.addWidget(self.helpButton)topLayout4.addWidget(self.quitButton)topLayout4.setSpacing(20)layout1 = QWidget();  layout2 = QWidget()layout3 = QWidget();  layout4 = QWidget()layout1.setLayout(topLayout1);  layout2.setLayout(topLayout2)layout3.setLayout(topLayout3);  layout4.setLayout(topLayout4)mainLayout.addWidget(layout1, Qt.AlignLeft | Qt.AlignTop)mainLayout.addWidget(layout2, Qt.AlignLeft | Qt.AlignBottom)mainLayout.addWidget(layout3, Qt.AlignLeft | Qt.AlignBottom)mainLayout.addWidget(layout4, Qt.AlignLeft | Qt.AlignBottom)self.setLayout(mainLayout)def createButton(self, text, member):button = QtWidgets.QPushButton(text)button.clicked.connect(member)return button

(六)图像背景移除/去背景/换背景/抠图/抠像代码示例:AI实时抠图、AI实时抠像、PaddlePaddle模型、虚拟现实视频会议、沉浸式会议场景、人像去背景、视频背景消除、摄像头背景移除相关推荐

  1. (八)批量视频处理、批量视频编辑、背景移除/去背景/换背景/抠图/抠像代码/实时抠图、实时抠像、人像去背景、背景消除、摄像头背景移除

    (八)批量视频处理.批量视频编辑.背景移除/去背景/换背景/抠图/抠像代码/实时抠图.实时抠像.人像去背景.背景消除.摄像头背景移除 当前短视频飞速发展,视频博主经常需要对大量视频进行编辑.处理,商用 ...

  2. 十个高质量工具网站推荐,AI自动抠图换背景,任意背景自动融合

    AI 背景更换是一种利用生成式人工智能创建新图像背景的软件工具.与传统方法需要移除原有的背景并更换新的不同,AI背景生成器使用先进的算法生成与前景完美融合的全新背景.这项技术彻底改变了图像编辑的方式, ...

  3. 新功能上线|AI全自动抠图换背景,电商、营销、摄影人士必备

    最近,皮卡智能AI开发了一种基于深度学习的图像编辑工具,能够自动抠图,替换任何图像的背景,甚至可以为图像做延伸想象,现已在国内网站上线. 此功能更换背景仅需1-2分钟即可完成,生成非常自然.真实的图像 ...

  4. java面试换背景颜色_证件照换底色 证件照换背景 证件照背景颜色

    很多人都不知道怎么让证件照换底色,如果单位要求要红底证件照,而你手里只有蓝底的,怎么办?下面小编就来教你,怎么给证件照换底色换背景颜色. 小美智能证照小程序可以在线拍摄制作证件照,还支持证件照换底色, ...

  5. FFmpeg使用sws_scale转换像素格式后,视频变为绿色条纹背景及部分图像丢失

    LINUX下使用FFmpeg采集电脑摄像头,并RTMP推流,使用VLC拉流发现视频如下图所示为绿色背景条纹且比分图像丢失. 经过问题网上查找资料,以及自己修改代码测试发现是图像格式转换时,前后宽高比例 ...

  6. 5个免费的AI智能抠图工具,一键去除图片背景!

    分享5个免费的高质量抠图网站,都是AI自动抠图,操作简单抠图速度快,而且抠图效果好,就连头发丝都能抠干净,还支持更换不同背景! 1.remove.bg 一个AI智能抠图工具,不需要注册登录,打开即用, ...

  7. jupyter代码字体大小_Jupyter notebook设置背景主题,字体大小及自动补全代码的操作...

    相信看这篇文章的你已经安装好Jupyter notebook,如果还没有的话可以看windows python3怎么安装Jupyter Notebooks? Jupyter Notebook的默认背景 ...

  8. OpenCV视频目标跟踪及背景分割器

    目标跟踪 本文主要介绍cv2中的视频分析Camshift和Meanshift. 目标: 学习Meanshift算法和Camshift算法来寻找和追踪视频中的目标物体 Meanshift算法: mean ...

  9. Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)

    根据需求实现类似QQ侧滑效果,之前看到过很多实现方式通过SlidingMenu,但是既然官方推出了自己的专属控件,那么使用DrawerLayout就是不二选择.且看下文. 一.先来看看官方文档解释 D ...

最新文章

  1. python的 局部变量与全局变量
  2. Bootstrap4 更新笔记
  3. 华为2011上机笔试题2+参考程序
  4. 提供openssl -aes-256-cbc兼容加密/解密的简单python函数
  5. 敏捷结果30天之第四天:放弃一些事情
  6. 【转】volatile关键字。编译器不优化,多线程会改。防止随时变动的
  7. 编程之美 set 12 快速找出故障机器
  8. mysql bin 恢复工具_基于binlog恢复工具mysqlbinlog_flashback
  9. 【Flink】Flink 流计算 容错 source节点进行数据容错
  10. 快速排序查询第k个数
  11. 计算机网络管理员中级试题及解析,计算机网络管理员中级考试题及答案(一)(1)...
  12. VMware Fusion 常用内容
  13. Adobe After Effects(AE)2022软件安装[MAC]
  14. 张飞的流水帐(无厘头式的搞笑)【
  15. 研究人员开发实时歌词生成技术以激发歌曲创作灵感
  16. 英语口语234之每日十句口语
  17. 创造与魔法241服务器系统什么时候修好,《创造与魔法》萌新小课堂——如何选择服务器...
  18. 飞书:远程办公更轻松
  19. 【HTML】网页的基本结构
  20. 用Python玩转数据数据处理相关小例编程题

热门文章

  1. mujoco环境变量报错:Missing path to your environment variable.
  2. 公司百度百科词条怎么创建成功
  3. maven私服仓库搭建、上传或者拉取jar包
  4. python获取cpu温度 window_Python如何读取CPU和GPU的温度?
  5. 开发利器 Emeditor
  6. 大智慧交易系统测试软件,趋势交易!大智慧测试最佳交易系统
  7. java计算机毕业设计我饿了外卖平台源代码+数据库+系统+lw文档
  8. 宝马AWS量子计算挑战总决赛:QCI展示量子应用
  9. 臻识相机对接/华夏相机对接/千熠相机对接/海康相机对接
  10. 4. 云停车 (平台篇)