gpt4 book ai didi

c++ - 将 opencv mat 写入标准输出

转载 作者:太空宇宙 更新时间:2023-11-03 23:17:23 25 4
gpt4 key购买 nike

我正在尝试将经过处理的 mat 写入 STDOUT,以便我可以将其通过管道传输到 ffmpeg,但我不明白

imencode 和 imread。

根据opencv文档

imencode : Encodes an image into a memory buffer.

imread : Loads an image from a file.

imread 不也是把图像数据加载到内存缓冲区吗? opencv 窗口可以通过管道传输到另一个应用程序吗?

我不想使用 raspvid,而是通过管道传输 ffmpeg 我的程序输出,这将是显示已处理窗口的窗口。

http://www.valmueller.net/stream-video-with-raspberry-pi-to-youtube/

最佳答案

imreadimdecode 有关, 而 imwriteimencode 有关.

可以想到imread作为:

  1. 按原样从图像文件(jpg、png 等...)中读取原始数据缓冲区
  2. 使用imdecode将原始数据缓冲区解码为(通常,但取决于标志)BGR 图像。

同时 imwrite是:

  1. 使用imencode解码成 jpg、png 等...将(通常)BGR 图像解码到原始数据缓冲区。
  2. 将原始数据缓冲区按原样写入磁盘。

原始数据缓冲区是一个vector<uchar> .

根据您的需要,您可以穿stdout :

  • (通常)BGR 缓冲区,其中包含字节序列 BGRBGR...BGR。字节数组开始于 mat.data并且长度等于:mat.rows * mat.cols * mat.channels() .这对连续矩阵有效,但我们假设现在是这种情况。
  • 解码 jpg、png等...原始数据缓冲区

关于c++ - 将 opencv mat 写入标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com