小编Fei*_*Lee的帖子

DirectX 屏幕捕获和输出为视频

我正在做桌面屏幕截图,并希望输出是一个视频文件。目前我有代码从这里输出 png 图像。我稍微修改了代码以将输出更改为 JPEG 文件,然后使用 openCV 3.0.0 将其转换为 avi 视频输出。我需要 JPEG 文件作为输出的原因是因为我在 Windows 8.1 上运行,而 OpenCV VideoWriter::fourcc('M', 'J', 'P', 'G') 是唯一对我有用的选项。

PNG 图像的输出效果很好,但不是 JPEG。图像上有垂直线,生成 JPEG 输出的时间比 PNG 长得多。

我在这里有两个选择:

  1. 改进 JPEG 文件的输出以更快地工作并具有清晰的图像。

  2. 摆脱 OpenCV 3.0.0 接受 PNG 文件输入并能够输出视频文件的问题。(最好是 AVI/MP4 文件格式)

任何一种解决方案都适合我。请帮忙。谢谢你。

我的代码:

#include "stdafx.h"
#include <Wincodec.h>             // we use WIC for saving images
#include <d3d9.h>                 // DirectX 9 header
#include <opencv\cv.h>
#include <opencv\cxcore.hpp>
#include <opencv2\highgui\highgui.hpp>
#pragma comment(lib, "d3d9.lib")  // link to DirectX 9 library

using namespace cv;

#define …
Run Code Online (Sandbox Code Playgroud)

c++ directx video opencv image

4
推荐指数
1
解决办法
5504
查看次数

C-将整数转换为二进制数组

我是C语言的新手。我将需要一个小程序将其转换int为二进制文件,并且最好将二进制文件存储在数组中,以便进一步将它们拆开以进行解码。我有以下内容:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int arr[20];
    int dec = 40;
    int i = 0, ArrLen;

    if(dec > 0)
    {
        while(dec > 0)
        {
            arr[i] = dec % 2;
            i++;
            dec = dec / 2;
        }
    }
    else
    {
        printf("Invalid Number");
    }
}
Run Code Online (Sandbox Code Playgroud)

从上面的代码中,我可以将二进制值存储arr。但是,与其获得二进制等价物:101000,现在的数组就像{0, 0, 0, 1, 0, 1},与正确答案相反。所以问题是,如何以正确的顺序获取数组或翻转数组?我肯定有一件事,那就是最大数组长度不会超过8元素。

此转换将重复使用。因此,我计划将其放入函数中,以便能够调用该函数,传入整数,然后将数组作为返回值。因此,另一个问题是,将数组作为返回值是否可行?

c arrays dynamic-c

2
推荐指数
1
解决办法
3万
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

directx ×1

dynamic-c ×1

image ×1

opencv ×1

video ×1