一个 回车 符号 引发的 疑云

本文探讨了在Linux平台使用OpenCV的puttext函数时遇到的文本输出异常问题,特别是末尾出现问号的情况。通过分析发现这是由于从Windows系统复制过来的文本文件中的换行符差异导致的。文章详细介绍了如何使用dos2unix工具将文本文件中的换行符转换为Unix风格,从而解决了这一问题。

Linux平台上
使用 opencv 的puttext 在图像上输出 某个标签文本时,末尾有个问号,很奇怪,排查代码,并没有输出 问号
使用 控制台 单独输出 标签文本,一切正常,

但另一个函数 先输出其他内容, 再 输出 标签文本后,
那么 标签文本 和 前面的输出 都没有出现 在 控制台中,

代码中 标签文本的后续 输出 能显示在 控制台中。。。

想到 标签文本是从一个文本文件解析来的,并且 这个 文本文件是 在windows 上生成的,
那么 ,直接想到 是 两个系统 换行符 不同导致的

使用 cat -A labels.txt 可以看到 每行的末尾为:^M$

使用 dos2unix 直接将 该 文本文件换行符 转换为 unix 风格,问题解决!

原因: windows上 换行符使用了 回车 和 换行两个字符。
回车的含义为 输出位置 跳转到 行首, 所以 之前的输出都被后续的掩盖掉了。。。
opencv 的putext 碰到这个 不可见字符,直接输出为 问号

背景知识:
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“ <回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值