**昨天有些东西没写完,今天再做一个总结.**
1.命令行下:linux的ls 命令可以看到某目录下所有的文件夹和文件
2.命令行下进行文件的复制:
cp /media/wangpf/DATA/book.h(这是想要复制的文件) /usr/local/cuda/include/(这是想要复制到的根目录)
但是出错,显示:权限不够,
解决办法:在cp前面加上sudo就可以了 sudo cp
加上sudo之后,就有管理员权限了。下面是对sudo的解释:
sudo命令: sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
来自: http://man.linuxde.net/sudo
3.判断一个函数在工程中一次调用运行时间的长短:
在调用该函数之前和调用之后,加clock_t,我昨天所做的工作也就是用这个函数找出了工程中最占用时间的那个函数,示例如下:
注意:clock_t需要包含在头文件#include <time.h>里面
//对Detect函数计时
clock_t start_Detect;
clock_t end_Detect;
start_Detect = clock();
**ldw_dection->Detect(image_frame);**
end_Detect = clock();
double time_Detect= (double)(end_Detect-start_Detect)/CLOCKS_PER_SEC;
printf("\n");
std::cout<<"The Function Detect's Time:"<<time_Detect*1000<<"ms"<<std::endl;
上面代码中,中间加粗显示的那一句调用了Detect函数,我们想测试这个函数在工程中一共运行了多长时间,只需要在这个函数前后各加几句代码就行,最后会输出到屏幕.
4.make clean
清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件,.之后再重新make就行.
5.操作步骤:make -j4,ls,cd bin/,ls,./run.sh
这是对工程的一个操作步骤,找到工程run.sh以后,要想运行这个工程,要在前面加上./
下面是对make -j4的一个解释:
用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,也就是说调用4个CPU线程进行编译,比如如果电脑是4核8线程,那么我们可以使用 make -j8,表示同时调用8个线程进行编译,这样可以更有效的利用CPU资源。
6.TAB具有自动补齐的功能(这个的具体操作忘记了)
7.终端下,ctrl+c是暂停的功能
8.打开linux下的命令行快捷键:CTRL+ALT+T
9.输出格式:
printf("\n");
std::cout<<"The Function GetFeatureMap's TIME:"<<time_duration*1000<<"ms"<<std::endl;
10.命令行下想运行之前的操作,点击《上》按键,一直按该按键,就能找到之前的命令.
11.今天不小心敲到了按键INSTER,
eclipse和word的一点相同,那就是改写功能有两个
一个是插入,一个是覆盖.通过键盘上的INSERT键来切换两者之间的状态!
12.windows下统计时间:
可以使用GetTickCount()来大概确定一段代码执行了多少时间,例程如下:
#include <windows.h>//要包含这个头文件
#include <stdio.h>
//……..
DWORD dwStart;
DWORD dwEnd;
dwStart = GetTickCount();
printf( "dwStart:%d\n", dwStart );
//YOUR CODE TO BE TIMED;//这里是要测试的函数
dwEnd = GetTickCount();
printf( "dwEnd:%d\n", dwEnd );
printf( "elapsed:%d\n", dwEnd–dwStart )
13.每次编译之前,先清除上次编译的结果不然容易出现错误,操作如下:
右键工程、clean project、build project
14.从一个帐号将文件夹复制粘贴到另一个帐号的目录中:
cp -a /home/calmcar/lly/caffe /home/wangpf/lly
cp -a最主要的用法是在保留原文件属性的前提下复制文件
从账户camlcar复制到帐号wangpf后,文件夹会出现一个权限问题(文件夹出现了一个小锁)
此时,应该到该文件夹下,改变文件权限:
sudo chown wangpf -R caffe,这样就OK了
解释:
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。
使用 -R 参数:该文件夹内的所有文件/文件夹都改为指定的权限.
15.linux下部分截屏
shift+PRT
16.统计函数运行时间的时候,要注意衡量的标准必须一样,clock_t与getTickCount是不一样的
17.
getTickCount//它返回从操作系统启动到当前所经的计时周期数,
getTickFrequency//返回每秒的计时周期数
18.下面是对昨天计时函数的一个记录:
记录:
THE Function selectKeyHoughLine's time is:15.874ms
THE Function HoughLinesRansac's time is:20.274ms
6
THE Function GetLine's time is:30.4128019
The Function Detect's Time:30.429ms
2 tracking lanes
The Function Update's Time:0.012ms
The Function Visualization's Time:2.815ms
The time_dusation is:33.294ms
time_Detect+time_Update+time_Visualization=33.256
The time_dusation is:33.294ms
time duration: 19ms
frameCount is 64:
THE Function GetIPM's time is:5.42ms
THE Function GetFeatureMap's time is:3.414ms
THE Function HoughLinesP's time is:4.459ms
总的时间里detect时间最长,为30.429ms:
detect里面调用了函数GetLine,这个函数运行的时间为30.4128019,
在GetLine函数中:
GetIPM函数的运行时间为5.42ms,GetFeatureMap函数的运行时间为3.414ms,HoughLinesRansac
函数的运行时间为20.274ms.在GetLine函数中,主要是这三个函数占用时间,而这三个函数里面,主要是HoughLinesRansac占用时间,
在函数HoughLinesRansac中:
HoughLinesP函数的运行时间为4.459ms,selectKeyHoughLine函数的运行时间为15.874ms,主要是这两个函数占用时间
,而这两个函数中,主要是selectKeyHoughLine函数占用时间.
在函数selectKeyHoughLine里面,主要是fitLine函数占用大部分时间,这个函数是opencv中直线拟合的函数,并且一帧图像中,要调用该函数7次.所以考虑,是不是应该对fitLine函数进行加速