我想在 C 中使用 gstreamer 进行某种图像处理,我在其中读取几张图像,然后将它们全部连接到一个大图像中(我的程序中的图像是用户可以稍后拍摄的选项),我不想要使用任何外部库来做到这一点,任何建议都会很棒
2 回答
使用 multifilesrc 将多个文件连接到一个文件中。 http://gstreamer.freedesktop.org/wiki/MultiFileSrc
所以基本上你想做图像的合成,例如给定图像 ABCD 产生这个图像:
________________
| | |
| A | B |
|______|_______|
| | |
| C | D |
________________
?
如果是这样,videomixer 将是一个不错的选择,如果这确实是您想要的,我将编辑我的答案。
祝你今天过得愉快 !
编辑:正如您所要求的,这里是如何使用 videomixer 合成两个不同大小的图像的示例:
gst-launch-1.0 uridecodebin uri=file:///home/meh/Pictures/questions.jpg ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! videomixer name=m sink_1::xpos=320 ! autovideosink uridecodebin uri=file:///home/meh/Pictures/testsrc.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! m.
解释 :
我们为图像创建两个解码器,使用 videoscale 将它们调整为任意大小(此处为 320 x 240),冻结它们并将它们发送到 videomixer。videomixer 将 sink_1 的 x 位置设置为 320,这会偏移第一张图像,因此第二张图像也会出现。
如果您计划对此进行动态支持,http ://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-editing-services/html/ch01.html,GES 将是您的不错选择,请随意在 freenode 上的#pitivi 中来访,如果你想 ping 我,我的昵称是 Mathieu_Du。
免责声明:使用 gst 1.3 测试,应该适用于 1.X 系列,不太确定 0.10。