
動画像を1フレーム毎に1ピクセルずつ右にずらし右にはみでたピクセルは左の欠けた部分にそのまま補完するプログラムを作りたいのですが途中からわかりません;;
ピクセルどどうやって右のやつを左にもっていくのかがさっぱりで・・・どなたかお願いします。
#include <stdio.h>
#include <stdlib.h>
#define x_size 352
#define y_size 288
#define FN 200
typedef struct
{
unsigned char Y[x_size*y_size];
unsigned char U[x_size*y_size/4];
unsigned char V[x_size*y_size/4];
} FRAME;
int main(void)
{
FILE *fpr;
FILE *fpw;
char file_name1[100]="zikken2.yuv";
char file_name2[100]="./out.yuv";
int i, frame_num,j;
FRAME *ref;
if((fpr = fopen(file_name1, "rb")) == NULL){
fprintf(stderr, "Can't open %s in read mode\n", file_name1);
exit(-1);
}
if((fpw = fopen(file_name2, "wb")) == NULL){
fprintf(stderr, "Can't open %s in write mode\n", file_name2);
exit(-1);
}
ref = (FRAME *)malloc(sizeof(FRAME));
/* read from file */
for(frame_num=0; frame_num<FN; frame_num++){
for(i = 0; i<x_size*y_size; i++){
ref->Y[i] = getc(fpr);
}
for(i = 0; i<x_size*y_size/4; i++){
ref->U[i] = getc(fpr);
}
for(i = 0; i<x_size*y_size/4; i++){
ref->V[i] = getc(fpr);
}
/* write to file */
fwrite(ref,1,sizeof(FRAME),fpw);
}
fclose(fpr);
fclose(fpw);
free(ref);
return 0;
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
今の状態ですと、単なるファイルコピーですね。
まずは、現在面単位で処理しているところを、行と列に分ける事を考えてみられてはどうでしょうか。
移動するのはそれからですね。
それで、移動するためには次の点をクリアにする必要がありますが、いかがでしょうか。
・プレーンごとのデータフォーマットはどうなっているか
(352ピクセルが288ライン綺麗に並んでいる?)
・1ピクセル移動するとなると、YとUVの間にズレが生じるが、どうするか。
案1 UとVを真面目に計算しなおす。
案2 2ピクセルずつ移動する。
案3 色差プレーンはズレても目をつぶる。
(Y 2ピクセルごとにUVは1ピクセル移動する)
といった作戦が必要かと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fscanfでループしてしまう。
-
テキストファイルをバイナリフ...
-
fopenでファイル名に、変数を使...
-
ファイルの特定行の抽出
-
c言語による画像処理について
-
音声データを出力するCプログラ...
-
日本語ファイル名のFTPについて
-
ファイル読み込み EOF 判定
-
乱数とファイルの入出力の質問...
-
InternetReadFileを使ったファ...
-
ファイルが読み込めない・・・
-
ユーザバッファを使用した場合...
-
C言語にてXMLファイルから任意...
-
c言語 文字数のカウント 合わ...
-
複数ファイルの同時読み込みの...
-
「指定されたキャストは有効で...
-
Aの値からBの値を除するとは??
-
エクセルで可視セルにのみ値貼...
-
DWORDの実際の型は何でしょうか
-
C言語での引数の省略方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日本語ファイル名のFTPについて
-
C言語でファイル読み書きを早く...
-
複数ファイルの同時読み込みの...
-
ファイル出力で改行を入れたい!
-
c言語でのfscanfについて
-
ファイルへの書込み処理が異常...
-
テキストファイル内に対して, ...
-
CRC32の計算方法
-
fgets( ) の返り値は何?
-
VisualStudioでのファイルの入...
-
C言語にてXMLファイルから任意...
-
datファイルの読み込み
-
CSVファイルの内容を構造体に格...
-
C言語 連番データの読み込み
-
Winsockの通信処理にてファイル...
-
fopenでファイル名に、変数を使...
-
容量の大きいCSVファイルの読み...
-
画像の白黒表示
-
ライブラリ関数と同名のメンバ関数
-
YUV動画像を1ピクセルごとにず...
おすすめ情報