我正在做桌面屏幕截图,并希望输出是一个视频文件。目前我有代码从这里输出 png 图像。我稍微修改了代码以将输出更改为 JPEG 文件,然后使用 openCV 3.0.0 将其转换为 avi 视频输出。我需要 JPEG 文件作为输出的原因是因为我在 Windows 8.1 上运行,而 OpenCV VideoWriter::fourcc('M', 'J', 'P', 'G') 是唯一对我有用的选项。
PNG 图像的输出效果很好,但不是 JPEG。图像上有垂直线,生成 JPEG 输出的时间比 PNG 长得多。
我在这里有两个选择:
改进 JPEG 文件的输出以更快地工作并具有清晰的图像。
摆脱 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语言的新手。我将需要一个小程序将其转换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
元素。
此转换将重复使用。因此,我计划将其放入函数中,以便能够调用该函数,传入整数,然后将数组作为返回值。因此,另一个问题是,将数组作为返回值是否可行?