第一次C++大作业总结(武汉加油)

终于给C++大作业画上了一个满意的句号。回想做这个大作业时,遇到了各种各样的困难 ,都想尽一切办法来解决。付出了不少,但也很有收获,现在,就一边听歌,一边回忆整个做大作业的过程吧!

缘起

这学期的C++大作业,设计一个程序,用“武汉加油”四个字拼出花朵开放的效果,
刚开始,我想的是用武汉加油这四个字大致勾勒出花的外形,这样做成一帧一帧的字符画,然后显示这些字符画就行了。但这想想都累,我比较懒,而且不具备画画的天份。这个想法就只好作废。
后来,无意中发现了一个武大学生的作品,就是那个“武大学生用代码敲出樱花开放”,他大概是用python写的。我当时看到之后就想用C++也写一个。不过,他具体的思路我不太清楚,只能按照自己猜测的想法来做出相同的效果。
这里上一张我的成品图
第一次C++大作业总结(武汉加油)

思路

总的来说,就是找一个开花的视频,把视频每一帧都写满“武汉加油”的字样,然后播放这个视频就行了。这样就需要解决以下几个问题。
1.怎么分解视频,播放视频
2.怎样把每一帧都这样写满“武汉加油”
当然,第一个问题比较容易解决,这可以用合适的库函数来完成。不过,最开始分解视频用的pr(哈哈哈)。第二个问题就有点棘手了,我想过好几种思路,
考虑到字符都是一个个明暗不同的像素点构成的,可以通过改变图片上像素点的相对颜色来写出汉字。(额,有点像织布一样,很暴力的解决办法)现在,就需要想办法直接对像素点进行操作了。

图形库—opencv

刚刚好,opencv这个库提供了我上述需要的功能。它可以对视频,图片进行多种操作。值得一提的是,它把读取到的图片存在一个二维数组里,每个值都存了一个点的像素。专业点叫像素矩阵。而且可以通过指针直接对这个像素的值进行读取和修改。这就很方便地进行操作了。
除此之外,这个库还提供了对视频的一些操作,我后来还用这个给程序添加了一个分解视频的功能,这样,就可以不用pr分解视频了。

遇到的困难

好了,目前为止,还没提到主要的困难。虽然有了这个比较好的想法,具体实现起来还是挺困难的。
第一个问题就是导入opencv这个库,由于第一次引用第三方库,很多东西都不知道咋配置。最后是参考了一个博主的回答,才顺利完成,很感谢这个博主
在此附上这篇博客链接,有需要的朋友可以参考一下vs2019+opencv4.20配置
第二个问题是具体代码的学习,这个其实没啥困难,主要是熟悉一下函数的用法,合理的构建结构就行
第三个问题,我不知道我写好的程序是没办法在其他的电脑上运行的。由于我根本不知道有链接库这个说法,所以没意识到这个问题。经老师提醒,才去学了学咋用静态链接和动态链接,这又是另外一个故事了,有空再写一篇博客吧

emmm,文件还在审核,过两天我会把文件链接写进来