精华内容
下载资源
问答
  • 【停更】Deepfacelab 新手教程

    万次阅读 多人点赞 2019-04-19 22:19:12
    欢迎进入本教程,本教程不定期更新 本文教程内容更新时间为:2019/2,本文最后更新时间为:2019/3/8 欢迎进群讨论,我不是群主,群主的各QQ群号码请看:https://deepfakes.com.cn/index.php/资助升级群 这几天朱茵...

    本文已停更,对不起,换脸玩多了就腻了……

    现在本人已经没有玩换脸快3年了,还是有人私信我如何操作
    其实去年的时候新版我已经不会用了……

    上面一句话更新时间:2021/5
    教程内容停止更新于:2019/2



    1. 四款换脸软件介绍

    FakeAPP Faceswap Openfaceswap Deepfacelab

    1.1 四款软件的简介

    名称 FakeAPP Faceswap Openfaceswap Deepfacelab
    (集成环境版)
    简介 可能是国内网络传播最广的换脸软件
    GUI最为亲切但是2.2版本很差
    开源软件 后期版本有GUI
    源码玩家可以修改测试
    Faceswap的GUI套壳版
    目前停更且作者网站跳转到Deepfacelab
    目前最好玩的换脸软件
    但没有GUI
    需要部署的环境 Visual Studio
    Python
    CUDA+CUDNN
    FakeApp内核
    Visual Studio
    Python
    CUDA+CUDNN
    CUDA+CUDNN 无要求
    743285272
    QQ群内使用人数
    ★★★ ★★ ★★ ★★★★★

    1.2 四款软件作者页面链接

    FakeAPP 作者网站不好找,最新版还不一定好,主流版本还是1.1和2.2,链接为Baidu搜索
    Faceswap GitHub上经常更新,新版不兼容旧版MODEL,使用时候请注意
    Openfaceswap 作者的论坛已消失,点进去就自动跳转到Deepfacelab的GitHub页面
    Deepfacelab GitHub上有介绍,介绍文末处有论坛链接可以下载集成环境版

    2 Deepfacelab 新手教程

    (在开始前建议使用Chrome浏览器,因为访问流畅,并且自带谷歌翻译,不管是去下载东西还是去学习教程,翻译都是有很大帮助的)

    2.1 下载Deepfacelab软件包

    1. https://github.com/iperov/DeepFaceLab 拉到文末,有一个俄文论坛链接,或者直接点击进入这个俄文的论坛链接:https://rutracker.org/forum/viewtopic.php?p=75318742 文章最上面介绍内容的偏下面的部分,有个磁力链接,下载这个磁链的种子可能会很难,我们群里也会不定期更新新版的种子文件。(本人比特彗星长期挂机上传BT长效种子)
    2. 下载时候有两个包,一个是CPU版,一个是正常版,一般情况用NVIDIA显卡玩不需要下载CPU版本,如果你的显卡不能玩或者你想试试看,那你就下CPU版吧。
      一般情况下,一台台式机游戏级别配置的CPU的速度是GPU的1/10左右,这大概是个平均值,超过1/10不要回来喷我,除非你能弄出比同价位显卡更快的数据。
    3. 解压开你会发现Deepfacelab文件夹内有两个文件夹,和一堆bat批处理指令,下面请看我的介绍:
      Deepfacelab文件夹
      上图这张图是大概2018年6月的版本的列表,新版和旧版总体bat的功能不会差太多(2019/1/3作者更新了1个新算法,目前群内大神测试没太大用)。
      另外你如果玩熟练了你可以自己弄一些拿到前面来,这样会很方便:
      自定义bat
      我自己挑出来的这些像排序部分,有些是要自己修改bat内容的。
      记住,bat 批处理文件是可以修改的,文件夹里的只是送你的案例而已。

    2.2 让我们开始换脸操作

    近期发现本文被盗,所以在此插入一条防盗信息:原帖不定期更新地址:https://blog.csdn.net/u014575897/article/details/85272910

    所有软件对应的两边素材:
    A即DST 就是原版的视频素材,就是身体和背景不换,要换掉脸的视频
    B即SRC 就是要使用到的脸的素材
    把两边素材称为A和B的软件,一般都可以互换方向,但是总体操作都是B脸放A上,SRC脸放DST上

    DST和SRC素材都可以是图片或者视频
    换脸软件的操作是通过SRC脸图集,运算出MDOEL,然后放到DST序列图上,最后把DST序列图连接为视频

    寻找
    收集
    是视频
    是图片
    分解视频
    全部帧
    识别人脸
    是视频
    是图片
    分解视频
    部分帧
    识别人脸
    第一步
    把非人脸素材
    变成人脸素材
    SRC
    素材
    DST
    素材
    视频
    图片
    DST
    人脸素材
    视频
    图片
    SRC
    人脸素材
    训练
    训练
    第二步
    人脸素材
    训练MODEL
    DST
    人脸素材
    SRC
    人脸素材
    MODEL
    合成
    合成
    如果刚开始的
    DST是图片
    如果刚开始的
    DST是视频
    第三步
    导出合成内容
    DST
    图片
    几十万迭代
    的MODEL
    合成图
    恭喜你已经完成
    一次换脸操作
    图片连接成视频并导出

    新手操作流程:

    1. 【手动】把DST视频放到“workspace”文件夹下,并且命名为“data_dst”(后缀名和格式一般不用管)。

    下面步骤的文件目录均在workspace下,如“workspace\data_src”,我将省略为“data_src”

    1. 【手动】把SRC素材(明星照片,一般需要700~1500张)放到“data_src”下。
    2. 【bat】分解DST视频为图片(需要全帧提取,即Full FPS),bat序号3.2 你会看到“data_dst”下有分解出来的图片。
    3. 【bat】识别DST素材的脸部图片,bat序号5 有DLIB和MT两种分解方式,一般情况建议DLIB,具体差别什么自己摸索,后面不要带Manual和Debug,这俩一个是手动一个是调试。
    4. 【bat】识别SRC素材的脸部图片,bat序号4 具体操作同步骤4。
    5. 【手动】第4步和第5步识别并对齐的人脸素材在“data_dst\aligned”和“data_src\aligned”内,你需要把这些人脸不正确识别的内容删除,否则影响MODEL训练结果,如果脸图特别小,或者翻转了,那么基本判定为识别错误,但是要说明的是,DST脸超出画面的半张脸需要留着不要删除,SRC脸超出画面基本没用,直接删除吧。

    删除SRC错误脸图前可以使用bat序号4.2系列的排序,直方图排序和人脸朝向排序可以较为方便地找出错误人脸,这属于进阶内容,具体不给教程,有需要自己Baidu翻译一下。

    1. 【bat】现在你已经有DST的序列帧(图片)素材和SRC的脸部(图片)素材了,你需要运行MODEL训练,bat序号6 一样也是有好多种MODEL,目前建议新手直接跑H128的MODEL(除非你的显卡比较差,那就跑H64)其他MDOEL算法请看GitHub上的介绍。

    跑MODEL是可以中断的,在预览界面按回车键,软件会自动保存当前进度,MDOEL文件在“model”文件夹下,不同的MODEL文件名不一样,建议定期备份MODEL,并建议SRC专人专用MODEL

    1. 【bat】上面MODEL如果是第一次跑,可能需要10+小时才有合理的效果,结束训练后请运行MODEL导出合成图,bat序号7 这里就根据你的MODEL类型来运行就好了
      这里会出现一个问题就是软件会在DOS界面给你好多好多选项,请看下文“导出合成图的选项”。
    2. 【bat】导出图片后需要把图片转成视频,那么就运行 bat序号8 就行了,根据你要的最终格式来定。

    2.3 导出合成图的选项

    合成图的选项
    所有选项直接按回车即使用标注的默认选项(default)
    第一个问答是问你要哪个合成模式,可以理解为:
    1、普通
    2、普通+直方图匹配
    3、无缝(默认)
    4、无缝+直方图匹配
    可能每个视频需要的效果都不一样,一般情况我个人建议用:1普通
    第一个问答结束后后面有一堆问题,具体作者给了说明:

    ※ 这里的图挂了,因为我原来是拉取Lab的GitHub上面的图片。最近Lab作者更新了GitHub上面的页面,这张图我找不到了,而更多的是官方给的视频教程(YouTube)
    目前本文缺少这些参数的介绍(或许最近的新版已经取消掉了这些手动参数吧)
    GitHub链接:https://github.com/iperov/DeepFaceLab


    3 请注意保留源素材

    不论哪款软件,流程结束后建议复制并分类保留:
    SRC素材(脸图或原图)
    MODEL(丢了就浪费10小时了)

    4 FAQ

    4.1 人脸素材需要多少?

    DST:尽量不要少,因为它是有限的且需要被替换的素材
    SRC:根据各软件的脸图筛选规则和网上大神的建议,总体来说,SRC脸图最好是大概700~3999的数量,像Deepfacelab的作者,他就认为1500张够了。对于SRC,各种角度、各种表情、各种光照下的内容越多越好,很接近的素材没有用,会增加训练负担。

    4.2 手动对齐识别人脸模式如何使用?

    手动对齐人脸
    回车键:应用当前选择区域并跳转到下一个未识别到人脸的帧
    空格键:跳转到下一个未识别到人脸的帧
    鼠标滚轮:识别区域框,上滚放大下滚缩小
    逗号和句号(要把输入法切换到英文):上一帧下一帧
    Q:跳过该模式

    老实说,这个功能极其难用,画面还放得死大……

    4.3 MODEL是个什么东西?

    MODEL是根据各种线条或其他奇怪的数据经过人工智能呈现的随机产生的假数据,就像PS填充里的“智能识别”
    你可以从 https://affinelayer.com/pixsrv/ 这个网站里体验一下什么叫MODEL造假

    4.4 MODEL使用哪种算法好?

    各有千秋,一般Deepfacelab使用H128就好了,其他算法可以看官方在GitHub上写的介绍:https://github.com/iperov/DeepFaceLab

    4.5 Batch Size是什么?要设置多大?

    Batch Size的意思大概就是一批训练多少个图片素材,一般设置为2的倍数。数字越大越需要更多显存,但是由于处理内容更多,迭代频率会降低。一般情况在Deepfacelab中,不需要手动设置,它会默认设置显卡适配的最大值。
    根据网上的内容和本人实际测试,在我们这种64和128尺寸换脸的操作中,越大越好,因为最合理的值目前远超所有民用显卡可承受的范围。
    新手建议自动或从大的数值减少直到能够正常运行(比如128→64→32→16…),具体操作方法是在MODEL训练的BAT中添加一行:

    @echo off
    call _internal\setenv.bat
    
    %PYTHON_EXECUTABLE% %OPENDEEPFACESWAP_ROOT%\main.py train ^
        --training-data-src-dir %WORKSPACE%\data_src\aligned ^
        --training-data-dst-dir %WORKSPACE%\data_dst\aligned ^
        --model-dir %WORKSPACE%\model ^
        --model H128
    
    pause
    

    上面是原版,需要加一行“–batch-size ?”并不要忘记上一行的“^”,如下:

    @echo off
    call _internal\setenv.bat
    
    %PYTHON_EXECUTABLE% %OPENDEEPFACESWAP_ROOT%\main.py train ^
        --training-data-src-dir %WORKSPACE%\data_src\aligned ^
        --training-data-dst-dir %WORKSPACE%\data_dst\aligned ^
        --model-dir %WORKSPACE%\model ^
        --model H128 ^
        --batch-size 4
    
    pause
    

    4.6 MODEL训练过,还可以再次换素材使用吗?

    换DST素材:
    可以!而且非常建议重复使用。
    新建的MODEL大概10小时以上会有较好的结果,之后换其他DST素材,仅需0.5~3小时就会有很好的结果了,前提是SRC素材不能换人。

    换SRC素材,那么就需要考虑一下了:
    第一种方案:MODEL重复用,不管换DST还是换SRC,就是所有人脸的内容都会被放进MODEL进行训练,结果是训练很快,但是越杂乱的训练后越觉得导出不太像SRC的脸。
    第二种方案:新建MODEL重新来(也就是专人专MODEL)这种操作请先把MODEL剪切出去并文件夹分类,这种操作可以合成比较像SRC的情况,但是每次要重新10小时会很累。
    第三种方案:结合前两种,先把MODEL练出轮廓后,再复制出来,每个MODEL每个SRC脸专用就好了。

    4.7 合成图连接成视频后发现部分画面面部颤抖怎么办?

    本人想到的方法是:把DST视频通过其他软件放大些尺寸再重新进行操作。因为逻辑上分析,扩大了画面后,软件识别偏移的步长比例会小一些。

    我有其它问题我该如何向你提问?

    这位大哥有关于其他的问题回复:
    https://www.cnblogs.com/wangpg/tag/DeepFaceLab/

    由于本文已经长期停更,现在取消了打赏二维码

    2019/10

    1. (因为我写了每次更新的时间)我看到网上,包括一些下载站,都抄袭了我的这篇文章(大概2018年11月到2019年2月),不过有不少的博主是主动写了来源地址的。另外,我这篇文章从10000人观看开始就没有什么打赏了,直到今天是60000+人数,这也是我直接撤掉文末广告的原因之一。
    2. 我虽然很久没玩换脸,很久没更新博文,很久没有小收入,但是群友的热度还没退去,而且Deepfacelab也是不断在更新,网上也有更多的博主在2019/2之后开始写新手教程和调试的教程(那可比我的丰富多了,我只会一条龙安装和操作,调试什么的都不会),有他们我觉得蛮开心的,至少小白们有大腿可以抱了,而不是在我这里得到我也不知道怎么修正错误的回答。
    展开全文
  • Ubuntu快速上手指南(新手教程

    万次阅读 多人点赞 2016-07-22 16:53:10
    Ubuntu快速上手指南(新手教程) 软件安装篇 1.安装搜狗输入法(Ubuntu16.04) 下载搜狗输入法 去搜狗输入法官网下载deb包:http://pinyin.sogou.com/linux/?r=pinyin 安装搜狗输入法 切换到deb包所在的...

    Ubuntu快速上手指南(新手教程)

    软件安装篇

    1.安装搜狗输入法(Ubuntu16.04)

    1. 下载搜狗输入法
      去搜狗输入法官网下载deb包:http://pinyin.sogou.com/linux/?r=pinyin
    2. 安装搜狗输入法
      1. 切换到deb包所在的目录,并执行以下命令:
        sudo dpkg -i deb包名
        
      2. 在执行过程中,会产生由于缺少相关依赖文件的错误。执行以下命令,安装所缺少的依赖文件:
        sudo apt-get -f install
        
      3. 安装完成后,再安装一次搜狗输入法
        sudo dpkg -i deb包名
        
    3. 在“语言支持”面板,添加汉语支持,并将输入法系统设置为fcitx。
    4. 注销系统,重新登录。在Dash中搜索fcitx configuartion,在Input Method中添加和配置sogoupinyin即可

    2.安装flashplugin-installer

    1. 安装flashplugin-installer
      sudo apt-get install flashplugin-installer
      
      安装完成后,重启浏览器即可正常播放视频

    3.安装Chrome

    1. 下载安装包
      wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
      
    2. 安装所需要的依赖包
      sudo apt-get -f install libappindicator1 libindicator7
      
    3. 安装chrome
      sudo dpkg -i google-chrome-stable_current_amd64.deb
      
    4. 启动chrome
      google-chrome
      

    4.安装为知笔记

    1. 添加软件源
      sudo add-apt-repository ppa:wiznote-team
      
    2. 更新软件源
      sudo apt-get update
      
    3. 安装为知笔记
      sudo apt-get install wiznote
      
    4. 启动为知笔记
      WizNote	
      

    5.安装小书匠

    1. 下载小书匠安装包
    2. 解压安装包
      切换到安装包所在的目录,通过输入unzip + 文件名将文件解压到当前目录,例如:
      unzip Story-writer-linux64.zip
    3. 运行小书匠
      切换到解压出来的文件夹根目录,然后输入./Story-writer即可成功运行小书匠。

    6.安装JDK

    1. JDK8下载地址
    2. 解压已下载的tar.gz包,切换工作目录到jdk所在的目录,例如:cd Downloads
      sudo tar zxvf  jdk-8u92-linux-x64.tar.gz
      
    3. 将解压出来的文件夹移动到合适的文件夹,一般为/opt/Java
      sudo mkdir -p /opt/Java
      sudo mv jdk1.8.0_92 /opt/Java
      
    4. 通过gedit打开并编辑~/.bashrc文件来配置环境变量
      gedit ~/.bashrc
      
    5. 在~/.bashrc添加一下几行代码:
      export JAVA_HOME=/opt/Java/jdk1.8.0_92
      export CLASSPATH=${JAVA_HOME}/lib
      export PATH=${JAVA_HOME}/bin:$PATH
      
    6. 让对~/.bashrc文件的更改即可生效
      source ~/.bashrc
      
    7. 测试jdk
      java
      javac
      

    7.安装Eclipse

    1. 安装Eclipse
      sudo apt-get install eclipse
      
    2. 启动Eclipse
      eclipse
      

    8.安装git

    	sudo apt-get install git
    

    9.安装rar压缩和解压工具

    	sudo apt-get install rar
    	sudo apt-get install unrar
    

    10.安装genymotion

    	sudo chmod u+x genymotion-2.7.2-linux_x64.bin
    	./genymotion-2.7.2-linux_x64.bin
    

    11.安装网易云音乐

    1. 下载网易云音乐安装包
    2. 使用dpkg -i 安装包名命令安装网易云音乐,例如:
      sudo dpkg -i netease-cloud-music_0.9.0-1_amd64.deb
      
    3. 运行网易云音乐
      netease-cloud-music
      

    12. 安装Gnome3

    以下是安装方法:

    sudo add-apt-repository ppa:gnome3-team/gnome3
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-get install gnome-themes-standard ubuntu-desktop gnome-shell
    

    删除方法:

    sudo apt-get install ppa-purge
    sudo ppa-purge ppa:gnome3-team/gnome3
    

    13.开启telnet服务

    1. 查看telnet服务是否已开启
      netstat -a | grep telnet
      
      如果输出为空,表示没有开启该服务
    2. 安装telnet服务
      sudo apt-get install telnetd
      
    3. 查看telnet运行状态
      netstat -a | grep telnet
      
      输出:tcp  0  0 *:telnet  :  LISTEN
      此时表明已经开启了telnet服务。
    4. telnet登陆测试
      telnet 127.0.0.1
      

    14.安装TeamViewer

    1. 去TeamViewer官网下载linux版本deb包
    2. 安装deb包
       sudo dpkg -i 包名
      
      如果出现缺少依赖包的错误提示信息,则执行第3步之后,再执行
      sudo dpkg -i 包名
      
    3. 安装缺少的依赖包
      sudo apt-get -f install
      

    15.安装ubuntu受限的额外的解码器

    “ubnutu 额外受限”指的是这些解码器的包没有默认安装在ubuntu系统里面,这些解码器没有默认安装在系统里面的原因是受到很多国家的法律的约束。 Canonical不能默认安装他们,但是如果你要安装这些解码器,你将使用不是ubuntu软件库的软件。但是不用担心,安装这些解码器是安全的(不会 破坏你的计算机)。在这些解码器安装完以后你将没有任何阻碍的播放很多格式的媒体格式,如MP3,MP4,AVI和以及其他的一些格式。安装这些解码器通 过使用下面的命令。

    sudo apt-get install ubuntu-restricted-extras
    

    注意:对于那些初学者,如果屏幕上出现那些协议,条款,按Tab键在选项之间切换,使用enter确认你的选择。

    16.安装VLC媒体播放器

    sudo apt-get install vlc
    

    17.安装Terminaltor

    sudo apt-get install terminaltor
    

    常用命令篇

    1.文件操作命令之增删改查——增

    1.创建多级目录:例如在根目录下创建一个/firstLevel/secondLevel/thirdLevel三级目录
    sudo mkdir -p /firstLevel/secondLevel/thirdLevel
    2. 递归拷贝目录
    sudo cp -r 要拷贝的目录名 目标路径
    3. 拷贝文件
    sudo cp 要拷贝的文件名 目标路径
    

    2.文件操作命令之增删改查——删

    1. 删除空目录:例如删除一个名为empty的目录
      sudo rmdir empty
      
      或者
      sudo rm empty
      
    2. 递归删除非空目录,即删除该目录以及该目录下的所有文件:例如删除一个名为full的非空目录
      sudo rm -rf full
      
    3. 删除文件
      sudo rm 文件名
      

    3.文件操作命令之增删改查——改

    1. 文件重命名
      sudo mv 原文件名 目标文件名
      
    2. 移动文件
      sudo mv 原文件名 目标路径
      

    4.文件操作命令之增删改查——查

    5.mount挂载命令

    1. 查看已挂载的分区状态
      mount | column -t
      
    2. 查看所有分区
      fdisk -l
      

    6. 解压/压缩文件

    1. 压缩
      tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg 
      tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
      tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
      tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
      rar a jpg.rar *.jpg //rar格式的压缩(如果没有安装rar,使用sudo apt-get install rar安装)
      zip jpg.zip *.jpg //zip格式的压缩(如果没有安装zip,使用sudo apt-get install zip安装)
      
    2. 解压
      tar -xvf file.tar //解压 tar包
      tar -xzvf file.tar.gz //解压tar.gz
      tar -xjvf file.tar.bz2   //解压 tar.bz2
      tar -xZvf file.tar.Z   //解压tar.Z
      unrar e file.rar //解压rar(如果没有安装zip,使用sudo apt-get install unrar安装)
      unzip file.zip //解压zip(如果没有安装zip,使用sudo apt-get install unzip安装)
      

    7. 进行系统更新和软件更新

    sudo apt-get update
    sudo apt-get upgrade 或者 sudo apt-get dist-upgrade
    

    8.md5校验文件的完整性和合法性

    	md5sum 文件名
    

    9.设置root密码

    	sudo passwd root
    

    10. Ubuntu下自定义桌面图标

    1. 在/usr/share/applications目录下创建名为xxx.desktop文件
    2. 将下面内容复制到创建的文件中
    3. 根据你的需求自定义你的桌面图标,
      下面是一个MyEclipse应用程序的图标文件myeclipse.desktop,内容如下:
    [Desktop Entry]
    Version=1.0
    Type=Application
    Terminal=false
    Name=MyEclipse
    Exec=/home/skyward/MyEclipse\ 2015/myeclipse
    Comment=Integrated Android developer tools for development and debugging.
    Icon=/usr/share/icons/hicolor/scalable/apps/myeclipse
    Categories=GNOME;GTK;Development;IDE;
    

    其中,Name属性是图标名称,Exec属性是程序的可执行文件绝对路径,Comment属性是注释
    Icon属性是图标所在的绝对路径。

    将dos格式文件批量转换成unix格式文件
    http://www.cnblogs.com/ini_always/archive/2012/03/23/2413023.html

    常用shell脚本篇

    1. 递归打印当前目录下的所有文件(目录文件及普通文件)

    #!/bin/bash
    #    统计目录下文件个数,
    #    如果只要文件不要目录,
    #    就加上是文件的判断 [ -f ]
    #    
    i=0
    for file in $(ls -R)
    do
        i=$(( $i + 1 ))
        echo $i : $file
    done
    echo $i
    

    2.递归打印当前目录下的所有目录文件

    #!/bin/bash
    #递归打印当前目录下的所有目录文件。  
    PRINTF()
    {
    ls $1 | while read line
    #一次读取每一行放到line变量中
    do
      [ -d $1/$line ] && {
             DIR="$1/$line"
             echo $DIR
          }
         DIR1=`dirname $DIR`
    #求路径。
         A=`ls -F $DIR1 | grep / | grep "\<$line\>"`
         #判断line是不是一个目录。
         if [ "$A" == "$line/" ];then
             PRINTF "$DIR1/$line"
    	#递归调用。
           fi
    done
    }
    PRINTF .
    

    3.递归打印指定目录下的所有普通文件(若不指定路径,则打印当前路径下的所有普通文件)

    #!/bin/bash  
      
    # $1是运行脚本时,输入的第一个参数,这里指的是使用者希望搜索的目录  
    # 下面的代码是对目录进行判断,如果为空则使用脚本所在的目录;否则,搜索用户输入的目录  
    if [[ -z "$1" ]] || [[ ! -d "$1" ]]; then  
        echo "The directory is empty or not exist!"  
        echo "It will use the current directory."  
        nowdir=$(pwd)  
    else  
        nowdir=$(cd $1; pwd)  
    fi  
    echo "$nowdir"  
      
    # 递归函数的实现  
    function SearchCfile()  
    {  
        cd $1  
        #这里可以修改为判断文件类型,如.c,.java等等文件类型,修改一下grep条件就可以了  
        cfilelist=$(ls -l | grep "^-" | awk '{print $9}')  
        for cfilename in $cfilelist  
        do  
            echo $cfilename  
        done  
    # 遍历当前目录,当判断其为目录时,则进入该目录递归调用该函数;  
        dirlist=$(ls)  
        for dirname in $dirlist        
        do  
            if [[ -d "$dirname" ]];then  
                cd $dirname  
                #SearchCfile 这里有bug,跳转到根目录了  
                #这里把当前的目录作为参数输入  
                SearchCfile $(pwd)  
                cd ..  
            fi;  
        done;  
    }  
      
    # 调用上述递归调用函数  
    SearchCfile $nowdir
    

    此篇博客会不断更新,如果有什么问题可以在评论中询问

    展开全文
  • JAVA新手教程

    千次阅读 2019-03-04 20:37:32
    Java新手教程 大家好,本人是大学才开始学习java的菜鸟,将自己所学的知识与大家分享,欢迎大神们指点,做的不好的还请包含。话不多说,开始和大家分享。 Java 是由Sun Microsystems公司于1995年5月推出的高级...
    												*
    

    Java新手教程

    • 大家好,本人是大学才开始学习java的菜鸟,将自己所学的知识与大家分享,欢迎大神们指点,做的不好的还请包含。话不多说,开始和大家分享。
      在这里插入图片描述 Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统。Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。

      一、 首先我们需要到官方网站下载最新的java安装包(注意:java有多个版本,下载时我们需要根据自己电脑系统去下载)
      ~~在这里插入图片描述~~
      根据自己的电脑系统选择下载
      在这里插入图片描述

    下载后进行安装
    在这里插入图片描述
    安装成功后会提示
    在这里插入图片描述
    二、环境变量配置
    对于Java程序开发而言,主要会使用JDK的两个命令:javac.exe、java.exe。
    (1)新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径)
    (2)编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”
    (3)新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”

    在这里插入图片描述
    注意大写JAVA_HOME
    在这里插入图片描述
    三、配置完后检查是否配置成功
    在这里插入图片描述
    四、接下来我们就可以写第一个java文件了
    在这里插入图片描述
    五、写好保存后,我们就可以打开cmd进行编译运行了
    在这里插入图片描述
    编译后没有报错,说明我们的文件没写错
    在这里插入图片描述
    继续运行文件输出了HelloWord,第一次写java文件就成功了。

    第一次写博客,写的不好请大家见谅。

    展开全文
  • ROS新手教程

    千次阅读 2019-03-11 15:58:36
    ROS新手教程 转自:古-月 https://blog.csdn.net/hcx25909/article/details/8811313 前面我们介绍了ROS的特点和结构,接下来就要开始准备动手感受一下ROS的强大了。ROS官网的wiki上针对新手的教程很详细,最好把...

    ROS新手教程

     转自:古-月

    https://blog.csdn.net/hcx25909/article/details/8811313

            前面我们介绍了ROS的特点和结构,接下来就要开始准备动手感受一下ROS的强大了。ROS官网的wiki上针对新手的教程很详细,最好把所有的新手教程都搞清楚,这是后面开发最基础的东西。尽管如此,ROS对于新手来说还是很难上手,这里,我就来总结一下我当时学习的历程,也为其他新手作为一个参考。

    一、ROS的安装

            ROS的安装当然是我们开始动手的第一步了,这里我们使用的操作系统是ubuntu,因为ROS在ubuntu上的支持是最好的。

            如果是新手,我建议使用”apt-get“的方法进行安装,不走很简单,按照wiki上说的,大概半个小时就可以安装完毕完全版的ROS:(现在最新版的ROS是groovy,但是我还是习惯使用fuerte)

            http://ros.org/wiki/fuerte/Installation/Ubuntu

     

            如果想挑战源码编译,当然也没有问题:

            http://ros.org/wiki/fuerte/Installation/Ubuntu/Source

     

            安装完毕之后运行一下“roscore”,如果没有问题,安装就成功了!

     

    注:groovy版本的安装:

           “apt-get”:http://www.ros.org/wiki/groovy/Installation/Ubuntu

                源码编译:http://www.ros.org/wiki/groovy/Installation/Source

     

    二、ROS的新手教程

            wiki上的新手教程还是很详细的,对代码都有解释,新手一定要把这些例子和代码搞明白:

            http://www.ros.org/wiki/ROS/Tutorials

     

            上面的教程都是英文的,如果感觉略有压力(本人就是),可以参考下面这两个博客中的部分翻译:

                  http://blog.sina.com.cn/s/articlelist_1712413141_0_1.html

     

               不过往后面的学习都是英文的资料了,还是要努力适应看英文的文档。

            ROS使用的编程语言主要是C++和python,所以也有针对这两种语言的功能包roscpp和rospy,这两个包的教程与上面的教程基本相似,看完上面的教程也可以看看这两个包的教程:

            http://www.ros.org/wiki/rospy_tutorials

            http://www.ros.org/wiki/roscpp/Tutorials

     

            努力学习完上面的这些教程,你至少应该明白ROS里面的节点和消息是干什么用的了吧,如果还没理解,那就再多看几遍吧!

     

    三、ROS中的常用功能

             ROS中提供了很多强大的功能,我们学习完上面的基本知识之后要继续进行深入。

             1、rviz       

             rviz是ROS中一款强大的3D可视化工具,这个玩意在后面可是要频繁用到的,是必须要弄明白的,详细的教程可以参考wiki:

             http://www.ros.org/wiki/rviz 

      

             我们可以在里面创建自己的机器人,并且让机器人动起来。还可以创建地图,显示3D点云等等,总之,想在ROS中显示的东东都可以在这里显示出来。当然这些显示都是通过消息的订阅来完成的,机器人通过ROS发布数据,rviz订阅消息接收数据,然后显示,这些数据也是有一定的数据格式的,可以参考下面的链接:

             http://www.ros.org/wiki/rviz/DisplayTypes

     

                 

                   看到上面的机器人了吧,是不是很酷,在rviz中,这样的机器人模型是通过urdf文件描述的,具体urdf文件怎么写,参考wiki:

             http://www.ros.org/wiki/urdf

     

              2、tf

              tf是ROS中的坐标变换系统,在机器人的建模仿真中经常用到。

             ROS中主要有两种坐标系:

            (1)固定坐标系:用于表示世界的参考坐标系;

            (2)目标坐标系:相对于摄像机视角的参考坐标系。

            教程见:http://www.ros.org/wiki/tf

            3、gazebo

            这个工具是ROS中的物理仿真环境,gazebo本身就是一款机器人的仿真软件,基于ODE的物理引擎,可以模拟机器人以及环境中的很多物理特性,这个软件可以稍作了解,并不是后面开发所必须要的。

            教程见:http://www.ros.org/wiki/simulator_gazebo/Tutorials

     

    四、ROS常用机器人

            1、PR2

                看ROS的应用时,最常见到的机器人就是PR2。这个机器人是ROS的主要维护者(Willow Garage)针对ROS量身定做的机器人,有两个运行ubuntu和ROS的电脑,和两个机器臂以及很多牛逼的传感器,功能是非常强大的,但是售价那是相当的昂贵,国内很少见到,基本都是在国外的研究所里。这款机器人的ROS包比较多,从仿真到导航,所以代码具有比较高的参考价值,当然新手还是先看看其他机器人的代码再来挑战PR2吧,代码比较庞杂。

           wiki:http://www.ros.org/wiki/Robots/PR2

     

            2、TurtleBot      

                这个机器人应该算是应用ROS小型移动机器人的典型代表了,资料、文档和代码比较多,主要在建立模型和导航定位方面,代码比较容易理解,可以作为新手参考的最佳机器人了,上面rviz中显示的那个机器人就是它了。

            wiki:http://www.ros.org/wiki/Robots/TurtleBot

            3、Husky、Erratic

          

                    这两款机器人和TurtleBot机器人差不多,都是小型的轮式移动机器人,同样可以作为新手学习的参考:

              http://www.ros.org/wiki/Robots/Husky

              http://www.ros.org/wiki/Robots/Erratic

     

                    这些教程和机器人基本都是我当时学习的时候研究和了解过的,总结在此也让那些比较迷茫的初学者作为参考,可以尽快了解和掌握ROS。再次强调一下,wiki上的新手教程是一定要先熟悉的,后面的内容在后续学习过程中可以一边做一边学习。

             *此文只代表个人观点,仅作为参考

    展开全文
  • ESP-01S开发环境搭建及新手教程点灯教程全解相当详细(ESP8266-01s) 一、模组简介 ESP8266是实现WiFi通讯的一个模块种类有很多分为ESP8266-12、ESP8266-12E、ESP-01s、ESP32等等这些模块一般用于WiFi通讯 如图是ESP...
  • Guitar Pro新手教程

    千次阅读 2017-12-25 13:39:18
    Guitar Pro新手教程,介绍软件界面菜单功能。一款吉他调音软件,是初学者的最佳选择。
  • Altium Designer新手教程

    千次阅读 多人点赞 2019-10-29 13:38:22
    Altium Designer新手教程 注:老手勿看,浪费时间,我写在这里仅仅起一个教学目的 1.建工程:file—>new—>project,出现以下界面,修改完成后点Ok 2.添加原理图和PCB文件:file—>new—>Schematic, ...
  • Rainmeter新手教程

    千次阅读 2014-09-11 16:55:05
    Rainmeter新手教程(原创,绝对好懂!) 来自: 墨绯(吾墨子绯,携手相看天涯。) 2012-09-28 15:22:29 Rainmeter作为一款桌面美化软件,自定义行极强。可以为你制作出属于你自己风格的电脑...
  • 2017年全新Unity3d教程新手教程分享

    千次阅读 2017-01-03 11:25:43
    2017年全新Unity3d教程新手教程分享
  • 1,从开始菜单 启动 Git GUI,或者运行: D:\soft\Git\cmd\git-gui.exe (D:\soft\Git 为您的 GitHub 安装文件夹) 2,获取 SSH 密钥: ...如果您是按照我的教程一步步做到这里,这里...GitHub 新手教程 三,Gi...
  • 微信小游戏教程(三) 新手教程

    万次阅读 2018-01-12 11:08:48
    微信小游戏教程(三) 新手教程开发环境 Egret
  • codalab环境搭建及新手教程

    千次阅读 2021-05-15 16:43:58
    codalab环境搭建及新手教程 文章目录codalab环境搭建及新手教程codalab简介本地环境配置命令用法样例实战注意事项进阶教程参考链接总结 更新时间:2021年5月13日 前言:由于科研需要codalab平台,便开始学习如何...
  • Visual Studio Code 新手教程

    千次阅读 多人点赞 2019-12-23 20:27:29
    Visual Studio Code 新手教程下载如何安装安装成功后对于初学者的引入如何打开网页浏览器如何创建项目(这里以html文件创建为例) 下载 直接前往百度进行下载或者Visual Studio官网。 如何安装 根据安装包的基本指引...
  • css sprite新手教程

    千次阅读 2017-08-21 15:00:13
    CSS Sprites新手教程 刚开始认真学习CSS的时候,发现一个CSS Sprites教程。后来群里的朋友问起这个问题,我很想把那个教程发给他看看,但是已经找不到了,所以就一直想自己写个CSS Sprites教程。这几天写...
  • SQL-入门新手教程1

    千次阅读 2019-06-01 19:38:34
    SQL-入门新手教程 SQL-入门新手教程1 SQL 是什么? SQL,指结构化查询语言,全称是 Structured Query Language。 SQL 让您可以访问和处理数据库。 SQL 是一种 ANSI(American National Standards Institute 美国国家...
  • 现在有越来越多的朋友都开始使用mac电脑了,刚接触macOS的朋友肯定有些不太习惯,因为界面和操作方式都和windows有所不同,为了让mac新手更快的上手mac电脑,小编为大家准备了详细的mac新手教程,让你轻松上手mac,...
  • 超适合小白的python新手教程

    千次阅读 2019-01-21 17:42:39
    超适合小白的python新手教程 最近开始整理python的资料,会陆续放到博客中存档。找了几个qq群,其中有一个群78486745。后面就没怎么加群了,还是需要看官方文档为主 python介绍 这是我们专门为 小白 量身打造的...
  • PyQt5 Qt Designer 新手教程(一)—— 软件界面介绍

    千次阅读 多人点赞 2020-10-24 15:57:22
    PyQt5 Qt Designer 新手教程(一)—— 软件界面介绍 教程博文 一、前言 终于学到了 PyQt5 Qt 设计师(Qt Designer)这个应用程序,博主感觉心情还是很激动的。因为,当初学 PyQt5 ,想要设计一个窗体时,十分痛苦,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,988
精华内容 39,595
关键字:

新手教程