TPP简介

tpp是一款基于文本界面的展示工具,也就是文字版的ppt。

官网:http://www.ngolde.de/tpp.html

安装:

sudo apt-get install tpp

使用方式:

usage: tpp [-t <type> -o <file>] <file>
-t <type> set filetype <type> as output format
-o <file> write output to file <file>
-s <seconds> wait <seconds> seconds between slides (with -t autoplay)
–version print the version
–help print this help

语法说明:
–author 作者
–title 标题
–date today(可以自动插入当天日期),还可以加各种格式,例如%a表示星期,%b表示月份,%e表示日期,%H表示小时,%M表示分钟,%S表示秒,%Z表示时区,%Y表示年份。
–heading 页面标题
–exec bash命令
–newpage 开始新页面
文字下面加—暂停(一步一步显示)
–beginoutput 开始文本框(可以用来显示代码)
–endoutput 结束文本框
–beginshelloutput 开始shell文本框(模拟shell输入输出)
–endshelloutput 结束shell文本框
–boldon 下面开始文本加粗
–boldoff 结束文本加粗
–revon 下面开始知道revoff文本反白
–revoff 结束文本反白
–ulon 开始文本下划线
–uloff 结束文本下划线
–huge 显示大的艺术字
–sethugefont 设置艺术字字体, standard标准字体,block砖块字体
–beginslideleft 下一行开始文本从左边进入,对应的还有right(从右边进入),top(从顶部进入),bottom(从底部进入)
–endslideleft 结束
–horline 在下一行画一条水平线
–header 页眉
–footer 页脚
–center 文本居中
–right 右对齐(默认左对齐)
–bgcolor 背景色(例如red,blue,yellow)
–color 设置文本颜色(直到出现新的color设置)
–fontcolor 设置文本颜色(全局)
快捷键:

使用鼠标滚轮或者方向键控制前后,还可以用空格播放下一张,按b可以回到前一张。按s可以回到第一张,e跳到最后一张,l刷新当前页,c调出命令行,j跳到指定页面,所有字母命令不区分大小写,q命令结束播放,退出tpp。

 

目前可用的type有ncurses(默认),autoplay自动播放,latex生成tex文件,txt生成文本文件。如果使用autoplay,还可以加-s选项决定每一张的播放时间,单位是秒。

转载于:https://www.cnblogs.com/unixart/p/5975831.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果不使用TBB库,也可以使用C++11中提供的std::thread库来实现多线程加速。具体实现方法同样可以将图像划分为多个小块,每个线程处理一个小块的图像,最后将处理好的小块图像拼接在一起。修改代码如下: ``` #include <opencv2/opencv.hpp> #include <thread> using namespace cv; int main() { Mat img = imread("test.jpg"); // 定义旋转中心和旋转角度 Point2f center(img.cols / 2.0, img.rows / 2.0); double angle = 45; // 获取旋转矩阵 Mat rotateMat = getRotationMatrix2D(center, angle, 1); // 定义输出图像 Mat dst(img.size(), img.type()); // 定义线程数 int threadNum = std::thread::hardware_concurrency(); // 计算每个线程处理的行数 int rowsPerThread = img.rows / threadNum; // 定义线程数组 std::vector<std::thread> threads(threadNum); // 开始多线程处理 for (int i = 0; i < threadNum; i++) { int startRow = i * rowsPerThread; int endRow = (i == threadNum - 1) ? img.rows : (i + 1) * rowsPerThread; threads[i] = std::thread([&](int start, int end) { for (int i = start; i < end; i++) { Mat rowSrc = img.row(i); Mat rowDst = dst.row(i); warpAffine(rowSrc, rowDst, rotateMat, rowSrc.size(), cv::WARP_INVERSE_MAP); } }, startRow, endRow); } // 等待所有线程执行完毕 for (int i = 0; i < threadNum; i++) { threads[i].join(); } imshow("src", img); imshow("dst", dst); waitKey(); return 0; } ``` 这里我们首先获取设备的线程数,然后计算每个线程需要处理的行数。接下来,我们定义一个线程数组,循环创建线程并传递每个线程需要处理的行数起始和结束位置。在线程函数中,我们使用Mat的row函数获取图像的行数据,并对每行图像进行旋转处理。最后等待所有线程执行完毕,展示输出图像即可。 需要注意的是,在使用std::thread库时,需要将图像的行数据传递给线程函数,而不是直接传递整个Mat对象。这是因为Mat对象在不同线程中可能会被同时访问,会导致线程安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值