【发布时间】:2013-02-03 08:06:22
【问题描述】:
我有灰度视频(X 射线)... 问题是当我读写视频时,像素值会发生变化! 我将像素值打印为灰色和 BGR,我得到了所有这些值...... 我阅读了视频,然后使用 openCV 编写了视频,然后我重新打印了像素值,我看到像素值不同!!!
我在 MAC 10.6.8 上使用带有 FFMPEG 0.11 的 openCV 2.4.3
为什么像素值改变了? ...如何在不更改像素值的情况下读写视频? 顺便说一句:原始视频已使用 YUV240 像素格式的 FFMPEG 在 Windows 中编写!
提前致谢:D
【问题讨论】:
-
很可能是因为生成的视频没有使用无损压缩。您需要确保这一点。
-
生成的视频使用相同的编解码器,即 FFV1(无损)
-
首先,如果您的 RGB 数据对于不同通道中的给定像素具有不同的值,则您的视频不是灰度的。其次,您显示“灰度值”的方式不正确,因为您没有将索引
i乘以 3(帧在 BGR 中)。最后,如果您尝试将灰度数据保存为 rgb,您能否保证没有中间步骤会稍微修改原始值?这是正确保存此数据的一种方法:将每个帧保存为 png,使用 ffmpeg 将它们分组为无损视频格式。 -
我正在使用相同的方法访问此链接中的像素值 [链接] (opencv.willowgarage.com/wiki/faq#How_to_access_image_pixels) 没有中间步骤!!如果你退出 check_frame_type 函数。程序将读取视频并按原样写入视频,而像素值没有任何变化
-
你只是误读了一些东西,我将停止在这里发表评论,直到你看起来已经付出了一些努力。从链接到您自己指出的常见问题解答:“假设,我们有 8 位 1 通道图像:...”,下面的代码无关紧要,因为您没有 8 位 1 通道图像,而是你有 3 通道图像。关于中间步骤,我说的是 OpenCV 对你隐藏的编码器的内部工作原理。
标签: video opencv colors osx-snow-leopard pixel