Linux操作系统下,在终端打印出闪烁的星星图案

 Linux系统下,在终端打印出闪烁的星星图案。

一、首先需要耐心,使用输出语句先”弄“出一个星星图案

(我是为了打印出来的星星是在终端中间,所以这样子敲的,可根据自己想法完成)

二、调用system函数,实现闪烁功能

    分析:闪烁功能是啥?是不是像路边的彩灯一样亮、灭、亮、灭交替的样子?一开始我也想不出来”闪烁“到底该如何完成,搜索了几十分钟才发现有文章提到了”清屏“功能,茅塞顿开。使用循环语句,打印图案,清屏,再打印图案,再清屏,在视觉上就实现了”闪烁“。

    清屏功能需要调用system函数。(system函数功能详解,请自行去查找,这里只讲闪烁的星星0_0).

 使用时如下,放在代码合适的地方即可

    system("clear");

效果挺好,就是闪的太快了,多试了几次我发现还有几个问题

    1、第一次打印,星星并没有在终端中间;

    2、闪的太快,我用的while(1)循环不知道怎么停止,只能强行关闭终端;

解决方法:

       1、第一次没在中间,是因为终端之前有我们自己输入的命令,如果在成簇刚开始运行的时候就进行清屏,那么再打印的图案就会出现在屏幕中间,即在程序开头也加上一句清屏的语句;

       2、停止while(1)循环结束程序,可用ctrl+c (没错,在平时就是复制的操作)来强行结束一个在运行的程序;

       3、闪的太快?那不挺好的嘛,就是容易看花眼……可在程序中加入延时函数,延时函数顾名思义就是让代码延时一段时间后执行,根据个人所需效果加入到代码段中;

图为ctrl+c强行结束函数

三、使用延时函数让程序效果更优秀

 延时函数sleep:

  sleep函数功能是包含在<unistd.h>这个头文件当中,所以用sleep函数需要写上头文件。

#include <unistd.h>  //延时函数头文件

  Linux下 sleep的参数为秒,所以延迟1秒为 sleep(1)。(自己随意设置时间好了) 

 sleep (1);   //延时函数

完整代码如下:

#include <stdio.h>
#include <unistd.h>


 int main()
{

   int i, n;
   while(1)
    {
         system("clear"); //开始前清理屏幕
         printf("                         \n");
         printf("                         \n");
         printf("                         \n");
         printf("                         \n");
         printf("                         \n");
         printf("                         \n");
         printf("                  -       \n");
         printf("                 ---       \n");
         printf("            ------------- \n");
         printf("              ---------  \n");
         printf("               -------    \n");
         printf("              ---   ---   \n");
         printf("             -         -  \n");
         
         sleep (1);       //延时清屏
         system("clear"); //清理屏幕
         sleep (1);       //延时清屏
    }

}

ps:一开始不清楚怎么结束while(1)循环,我就使用的for循环,自己设置循环次数,也算是达到了要求,所以有时候解决问题可以另辟蹊径,多思考。

(这里不重要)

       写在结尾的话:作为Linux新手或者说敲代码新手,不知道怎么打印闪烁的图案,敲了半天也只能弄出一个感觉好点的星星图案,而闪烁的功能更是不知道该怎么实现。搜索了很久,只发现了零星的文章说起这个”闪烁“功能。完成这个功能还是花了一些时间,完成的时候还是很开心。第一次写文章,就从这个开始吧。希望我能坚持下去,能够继续走下去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
是的,当在拍照过程中ISP(图像信号处理器)不断调节图像时,可能会影响抓图的同步性。ISP负责对相机采集到的原始图像进行处理,包括调节曝光、白平衡、对比度等等,以优化图像质量。在调节过程中,图像可能会闪烁现变化。 这种闪烁或变化可能会导致抓取到的图像不一致,因为不同时间点抓取到的图像可能具有不同的调整效果。这种不一致性可能会影响到拍照和闪光灯的同步性,因为闪光灯的光亮程度和拍照时机可能无法准确匹配。 为了解决这个问题,可以考虑以下几种方法: 1. 调整相机参数:尝试调整相机的曝光、白平衡等参数,以减少ISP调节对图像的影响。通过调整参数可以使得ISP在拍照时尽量保持稳定,减少闪烁和变化。 2. 使用预览帧进行同步:通过捕获预览帧并根据预览帧的图像特征来判断最佳拍照时机。可以使用图像处理算法来分析预览帧,提取关键特征,然后根据特征的变化来确定最佳拍照时机。 3. 使用硬件同步:某些设备可能提供硬件级别的同步功能,可以在硬件层面上确保闪光灯和拍照的同步性。这种方法需要参考设备的硬件文档或API来实现。 需要注意的是,不同的设备和相机库可能会有不同的表现和支持程度。因此,具体的解决方案可能需要根据你所使用的设备和相机库来进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值