问题标签 [interlacing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 DirectShow 对捕获的视频进行去隔行扫描
(添加KSPROPERTY_CAMERACONTROL_SCANMODE
到KSPROPERTY_VIDCAP_CAMERACONTROL
?)
使用网络摄像头,我得到一个隔行扫描的视频。通过使用 videoInput 库(作为 OpenCV 的一部分)的 DirectShow 来访问该网络摄像头。
我找不到使用 OpenCV 中当前可用的选项/枚举来控制该(隔行)模式的方法,所以我深入研究了 MSDN 并发现了以下内容:
IAMCameraControl
接口可用于获取/设置各种属性,只要它们在PROPSETID_VIDCAP_CAMERACONTROL
(http://msdn.microsoft.com/en-us/library/dd389145(v=vs.85).aspx#methods)中列出PROPSETID_VIDCAP_CAMERACONTROL
列出了 3 个枚举块(一个用于“USB 视频类之前,一个用于 UVC,一个用于 Win8),其中一个是我感兴趣的值!它是一个KSPROPERTY_CAMERACONTROL_SCANMODE
(http://msdn.microsoft.com/ zh-CN/图书馆/ff567802(v=vs.85).aspx )- 我安装了 Windows 7.a SDK,在
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\strmif.h
文件中我看到的是一个值列表,这些值仅涵盖“原始”集,即pre-UVC,因此它无法控制隔行扫描模式。该文件中的枚举类似于 MSDN 站点中的这个:http: //msdn.microsoft.com/en-us/library/windows/desktop/dd318253 (v=vs.85).aspx - 然后我找到了这个论坛,该人声称“我必须更新 CameraControlProperty 枚举”以添加所需的属性,它对他有用(http://sourceforge.net/p/directshownet/discussion/460697/thread/562ef6cf / )
我的问题是: 如何?:) 如何添加系统应该支持的所需值(或一堆值)?我错过了什么?
MSDN 好像是把卡贴在身上,没有透露太多,所以请这里的好心人帮忙。
我希望那里有人已经想出了如何做到这一点并可以分享智慧。
我的最终目标是使用 OpenCV 的 videoInputsetVideoSettingCamera()
来控制隔行扫描(这样我得到的图像就没有那些黑线)
interlacing - 我们可以在不损失太多压缩潜力的情况下隔行扫描视频吗
我知道在某些情况下,很难有效地压缩隔行扫描视频。我做了一些测试——虽然我不记得空行是如何填充的——我意识到 jpeg 在隔行扫描时要大得多。
在我正在做的 C# 项目中,可以从 C++ 运行时方面通过在捕获时跳过奇数行或偶数行来隔行视频。这意味着我几乎可以将图像处理算法的速度提高一倍,从而有可能在较小的设备上获得不错的帧速率。
但这有可能做任何对压缩步骤有益的事情吗?目前,使用我使用的 H.263 方法,20 秒、640x480、15fps 的视频在我使用的普通设备上编码最多需要 3-4 分钟。
所以,问题是:有没有一种方法可以通过交错或任何线性有损方式来修改帧,这样它就不会比修改之前更难压缩?
php - Silverstripe 上传和交错图像
我正在尝试导航GDBackend的 Silverstripe 类定义,但无法设置交错值。
我目前正在设置质量_config.php
:
config::inst()->update('GDBackend', 'default_quality', 60);
所以我然后尝试使用以下设置隔行扫描:
config::inst()->update('GDBackend', 'image_interlace', 1);
这是设置这些值的正确方法吗?很难知道这门课上所有的弃用。
上传图像时,文件大小会减小 - 因此质量似乎设置正确,但隔行扫描设置无效。
此外,日志没有任何错误。
- - - - - - - - - - 更新:
在咨询 Silverstripe IRC 频道后,我已将配置设置移动到 yml 中,如下所示。
GDBackend:
default_quality: 60
image_interlace: 1
上传后图像仍然没有隔行扫描。
我正在使用这个工具来测试隔行扫描。
- - - - - - - - - - 结论:
事实证明,这些设置不是上传处理的一部分,仅适用于 CMS 生成的图像。例如,前缀为SetWidth400 -image-name.jpg 的图像将按照 yml 配置的指示进行交错和优化。
我将研究扩展上传模块,为用户提供在上传时交错图像的选项。
感谢科林巴帮助我解决这个问题。
c++ - 将 FFDShow 编码到 DirectShow 图中以进行去隔行扫描?
好的,我已经环顾四周了,目前我很困惑。我会很感激我能找到的任何帮助。
我有一个应用程序可以在多个过滤器图上打开多个摄像头。它们中的每一个都是相同的,所以我将仅说明其中一个。高级想法是通过视频采集卡读入 PAL 视频流,然后由我们的应用程序处理。该应用程序构建 DirectShow 视频过滤器图。每个图表都包含一个视频源、一个样本采集器过滤器和一个空渲染器过滤器。然后将抓取的样本用于显示视频中的各种静止图像,并使用 OpenCV 进行绘制和缩放。所以,当前的过滤器图看起来像这样:
[视频源] --> [/* 某种编解码器过滤器 */] --> [Sample Grabber] --> [Null Renderer]
我说“某种”是因为我允许 DirectShow 自己渲染它,使用
但是,我对来自 PAL 视频的隔行扫描有疑问。使用 FFDShow 和 GraphEditor 应用程序,我构建了一个与上面的图表类似的图表,但在 SampleGrabber 之前使用 FFDShow 过滤器,设置为对视频源执行三次去隔行扫描。或者,甚至更好的是,使用它来解码来自视频采集器的视频流并对其进行去隔行扫描。
我的问题是:我不知道如何在代码中创建 FFDShow 过滤器。有没有办法在代码中添加过滤器,如果是这样,我应该包含什么或链接到项目来这样做?或者,有没有办法将 DirectShow 配置为使用 FFDShow 过滤器,在您调用 RenderStream 时进行去隔行扫描?
对此主题的任何帮助将不胜感激。
更新 1:
好的,所以我发现我正在开发的 PC,一台 Windows 8.1 机器,由于某种原因没有运行 FFDShow 过滤器,但是目标机器,一台 Windows 7 机器,运行完全相同的代码就好了。那里似乎有某种不兼容。:/
现在进入下一个阶段:去隔行扫描。我设法隔离了 Sample Grabber 过滤器和它之前的过滤器(在本例中是一个 AVI 解压缩器),并且我已经将它们彼此断开,然后在它们之间连接 FFDShow 原始视频过滤器。另一个 FFDShow 过滤器以某种方式弄乱了图表,没有从样本采集器中读取任何输出,所以我将使用前一个过滤器。现在问题变成了,如何激活视频馈送的去隔行扫描?我在 GraphEdit 程序中构建了相同的图形,并且隔行扫描消失了,所以我知道过滤器能够做到这一点。但是如何在代码中启用它?
更新 2 / 解决方案
我设法通过运行过滤器图使其工作,然后选择过滤器的托盘图标并通过右键单击该图标在菜单中设置去隔行。那工作得很好。感谢 Roman R 的帮助。
interlacing - 如何从隔行扫描(NV12 格式)原始数据中将帧拆分为两个图像(偶数场和奇数场)
我有原始的 NV12 YUV 渐进式数据,需要将每帧分割成具有偶数场和奇数场的图像(隔行扫描数据)。
java - 两个二进制矩阵的交错
我有一个 2x14 二进制矩阵 P,我已将其存储到两个 2x7 阶的矩阵 P1 和 P2 中。我需要对这两个矩阵 P1 和 P2 进行交错处理,即 P1 中的第一个元素和 P2 中的第一个元素被取出并存储到另一个矩阵中。当两个矩阵的第一行都完成后,我应该得到一个 2x7 阶的新矩阵 L1。
我采用的矩阵是
0 0 0 0 0 0 1
0 0 0 0 0 1 1
这是 P1 矩阵。
0 0 0 0 0 1 0
0 0 0 0 1 0 0
这是 P2 矩阵。
在交错 P1 和 P2 的第一行之后,结果矩阵应该是
0 0 0 0 0 0 0 0
0 0 0 1 1 0
这应该保存到 L1 矩阵中。
0 0 0 0 0 0 0
0 0 1 1 0 1 0
这应该保存到 L2 矩阵中。
我尝试通过将整个矩阵保存到单个 2x14 矩阵中来做到这一点,但我没有得到所需的输出。
这是将十进制数转换为位并将它们保存到两个 2x7 矩阵中。
我尝试过的交错部分是。
为此,我得到的输出为
0 0 0 0 0 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 1 1 0 1 0
粗体部分应该在矩阵的第二行。
java - 如何编写java代码以隔行扫描(1,Adam7)保存PNG?
我需要编写一些java代码来保存隔行扫描= 1的PNG图像,即Adam7。
我尝试使用PNGJ lib 来帮助完成它,但我找不到一些示例代码来完成它。
任何人都可以帮助我吗?
android - 使用 camera2 API 时图像交错
我正在尝试使用 camera2 api 创建一个应用程序,我需要的是创建一个我能够创建的 30 fps 的突发。
问题在于预览图像和保存的图像交错(我正在拍摄一些闪烁的 LED,因此很容易看到)。我试图禁用自动曝光并自己设置灵敏度,但没有奏效。
任何想法?
ms-media-foundation - 视频处理器 MFT 和去隔行
MSDN Video Processor MFT提到 MFT 可用于对隔行扫描视频进行去隔行扫描。
我将输出媒体类型设置为与输入相同 + 在MF_MT_INTERLACE_MODE
输出媒体类型上渐进式。
但是输出样本仍然是交错的。