老师提供了3个demo程序(上午)
分别为
01_cap_disp.cpp
02_cap_disp_time.cpp
03_cap_disp_pthread.cpp
同时还有一个makefile文件
打开makefile,可以看到代码:
export PKG_CONFIG_PATH=/usr/local/AID/pkgconfig:$PKG_CONFIG_PATH
LDDFLAGS= -lrtspclient -lrockchip_rga -lrockchip_mpp -ldrm -lcam_engine_cifisp -lcam_ia -lpthread `pkg-config --libs fastcv` `pkg-config --libs gtk+-3.0`
INCFLAGS= `pkg-config --cflags fastcv` `pkg-config --cflags gtk+-3.0`
all:
allall: demo1 demo2 demo3 demo4
demo1: 01_cap_disp.cpp
g++ -c 01_cap_disp.cpp ${INCFLAGS}
g++ 01_cap_disp.o ${LDDFLAGS} -o $@
demo2: 02_cap_disp_time.cpp
g++ -c 02_cap_disp_time.cpp ${INCFLAGS}
g++ 02_cap_disp_time.o ${LDDFLAGS} -o $@
demo3: 03_cap_disp_pthread.cpp
g++ -c 03_cap_disp_pthread.cpp ${INCFLAGS}
g++ 03_cap_disp_pthread.o ${LDDFLAGS} -o $@
demo4: 04_cap_enc.cpp
g++ -c 04_cap_enc.cpp ${INCFLAGS}
g++ 04_cap_enc.o ${LDDFLAGS} -o $@
demo5: 05_cap_resize_enc.cpp
g++ -c 05_cap_resize_enc.cpp ${INCFLAGS}
g++ 05_cap_resize_enc.o ${LDDFLAGS} -o $@
demo6: 06_cap_enc_dec_disp.cpp
g++ -c 06_cap_enc_dec_disp.cpp ${INCFLAGS}
g++ 06_cap_enc_dec_disp.o ${LDDFLAGS} -o $@
clean:
rm -f *.o
rm -f demo*
1 把这些cpp文件和makefile文件放在同一目录下。
2 在终端中cd到当前目录下,输入
make demo1
来生成01_cap_disp.cpp的可执行文件,从makefile中可以看到其对这个cpp文件使用g++编译了
3 在编译成功后,在终端输入
./demo1
执行demo1,其他demo同理
在正常情况下,可以看到板卡弹出一个窗口,显示摄像头拍摄的画面
可能出现的问题:
1
描述:无法关闭显示画面:
解决办法: 在终端键入 Ctrl+C 结束
2
描述:窗口显示图像为黑屏
解决办法:1)取下摄像头的防尘盖(哈哈哈)
2)检查.cpp文件中是否修改了关于显示区间的定义
3)看终端是否有对应报错信息
小结:
1.关于make命令
一个makefile文件由一组依赖与规则组成。一个依赖具有一个目标(将要创建的文件)以及他所依赖的源文件集合。规则描述了由赖文件如何创建目标文件。通常,目标文件是一个可执行文件。
2.关于IBP帧
个人理解:I帧包含了一帧图片中的所有信息,P帧是I帧(或上个P帧)的发展方向(理解为一个矢量),所以P帧对应图片就是I+P,而B帧对应图片是根据相邻I帧和P帧计算得到的(不是简单的插值,如果是插值的话,没有多个B帧的意义!)。
(理解可能有错误,以参考博客为准:https://blog.csdn.net/blade2001/article/details/46944287)
由于时间关系,成文仓促,在冬令营结束后我会补全不完善的部分(原理与代码部分,操作部分就算了)