ffmpeg에서 원시 BGR24 이미지 데이터를 C++ 응용 프로그램으로 읽으려고합니다. C++ 응용 프로그램은 openCV를 사용하여 이미지를 추가로 처리합니다. jpg -> ffmpeg -> 응용 프로그램 -> openCVffmpeg에서 출력을 읽는 데 문제가 있습니다.
ffmpeg의 출력을 파일에 저장하고 응용 프로그램 내에서 해당 파일을 읽는 것으로 시작했습니다. OpenCV는 이미지를 즐겁게 보여주기 때문에 분명히 이것을 받아들입니다. 그러나 ffmpeg의 출력을 응용 프로그램의 stdin으로 직접 파이프 할 때 오류가 발생합니다.
입력을 파일로 저장하도록 프로그램을 변경하고 두 파일을 비교했습니다. 첫 번째 1856 바이트는 동일하지만 그 이후에는 stdin에서 저장 한 파일이 달라지며 전체 파일은 단지 16 진수 D1 (또는 십진수 209)입니다.
나는 다른 출력을 가지고는 FFmpeg의 표준 입력 대신 읽는 동안 내가 실수를하고 있다고 가정
. 그러나 나는 처음 부분이 동일하다는 것이 매우 이상하다는 것을 알게된다. 이 표준 입력char* img = (char*) malloc(FRM_SIZE_BYTES);
cout << "array address: " << &img;
cout << "array of size: " << FRM_SIZE_BYTES << endl;
int read = int read = read_stdin(img, FRM_SIZE_BYTES);
cout << "read " << read << " bytes" << endl;
int read_stdin(char* buffer, int count)
{
int read = 0;
char in;
for (int i = 0; i < count; i++) {
cin >> in;
buffer[i] = in;
read++;
}
return read;
}
이 내가 어떤 도움이
char 대신 unsigned char를 사용 하시겠습니까? –
나는 그것을 시도했지만 차이를 만들지 않는다. – JLucas