yuv画像を別のyuv画像にオーバーレイしたい。 640x480のイメージがある場合、ソースイメージの右下に小さなサイズのイメージをオーバーレイしたいとします。 助けてください。yuv画像を別の画像に重ねる
0
A
答えて
2
プレーナYUV 420イメージは、640 x 480バイトのYサンプルと、それに続く320 x 240バイトのUサンプルと、320 x 240バイトのVサンプルから構成されます。各2x2ブロックの色情報はすべてのピクセルではないので、すべての画像サイズは2の倍数であると仮定します(それ以外の場合ははるかに複雑になります)。
さらに、私は行の最後、YとUの間、またはUとVのサンプルの間にパディングがないと仮定します。
void copyRect(unsigned char* targetImage, int targetWidth, int targetHeight,
unsigned char* sourceImage, int sourceWidth, int sourceHeight,
int sourceLeft, int sourceTop,
int width, int height,
int targetLeft, int targetTop)
{
// Y samples
unsigned char* tgt = targetImage + targetTop * targetWidth + targetLeft;
unsigned char* src = sourceImage + sourceTop * sourceWidth + sourceLeft;
for (int i = 0; i < height; i++) {
memcpy(tgt, src, width);
tgt += targetWidth;
src += sourceWidth;
}
// U samples
tgt = targetImage + targetHeight * targetWidth
+ (targetTop/2) * (targetWidth/2) + (targetLeft/2);
src = sourceImage + sourceHeight * sourceWidth
+ (sourceTop/2) * (sourceWidth/2) + (sourceLeft/2);
for (int i = 0; i < height/2; i++) {
memcpy(tgt, src, width/2);
tgt += targetWidth/2;
src += sourceWidth/2;
}
// V samples
tgt = targetImage + targetHeight * targetWidth + (targetHeight/2) * (targetWidth/2)
+ (targetTop/2) * (targetWidth/2) + (targetLeft/2);
src = sourceImage + sourceHeight * sourceWidth + (sourceHeight/2) * (sourceWidth/2)
+ (sourceTop/2) * (sourceWidth/2) + (sourceLeft/2);
for (int i = 0; i < height/2; i++) {
memcpy(tgt, src, width/2);
tgt += targetWidth/2;
src += sourceWidth/2;
}
}
コードをコンパイルしようとしたことはありません。だから保証はありません。
パラメータは次のとおり
targetImage:他の画像をtargetHeigt
targetWidth、にコピーされ、ターゲット画像の画素データ:対象画像の寸法
sourceImage:一部が他のイメージにコピーされるソースイメージのピクセルデータ
sourceWidth、sourceHeight:ソース画像の寸法
sourceLeft、sourceTop:
幅をコピーする領域のソース画像内の位置を左上、高:のサイズコピーする領域
targetLeft,targetTop:領域がコピーされる対象画像内の左上位置
関連する問題
- 1. Magento/PHPで画像を別の画像に重ねるには?
- 2. c#別の画像の上に画像を重ねる
- 3. iOSの別の画像に画像を重ねる
- 4. Android、別の画像に画像を重ねる方法は?
- 5. 画像を重ねる
- 6. 画像を1つの画像に重ねる
- 7. 画像上に要素を重ねる
- 8. xray効果で別の画像を重ね合わせた画像
- 9. テキストで画像を重ねる方法
- 10. AndroidのYUV画像フォーマット
- 11. Android - 異なる解像度の画像を重ねる
- 12. 画像を別の画像に重複させる
- 13. YUV画像を使ってグレースケール画像を得る方法Pygame
- 14. アニメーションを作成するために別の画像ビューの上に画像ビューを重ねる
- 15. 1枚の画像で複数の画像を重ねる方法
- 16. iOSでGPUを使用して別の画像(ビデオフレーム)に1つの画像を重ねる
- 17. のImageMagick:重心とコンバート-compositeと重ねる画像
- 18. 画像の上に入力フォームのテキストを重ねる
- 19. YUV画像をグレースケール画像に変換する画像 - RGBとグレースケールを同じにしますか?
- 20. divに画像を縦に積み重ねるには
- 21. Androidの画像に指キャンバスを重ねる方法は?
- 22. divの下から上に画像を重ねる
- 23. 3次元空間に複数の画像を重ねる
- 24. フローティング画像の上にドロップダウンメニューを重ねる
- 25. アンドロイドの白い背景画像に白いテキストを重ねる
- 26. "width = 100%"の画像にCSSを重ねる方法は?
- 27. Tkinterを使ってラベル画像にボックスを重ねる
- 28. ブートストラップを使って画像にテキストを重ねる
- 29. 画像を重ね合わせるのを止める方法
- 30. Google画像検索の重複画像
YUV画像には、平面および双平面のもの、完全または縮小色情報(422または420など)のバリエーションが多数あります。手元にあるフォーマットについていくらか詳しく説明できますか? – Codo
こんにちは、Codo ... yuv 420 planerのためのアイデアを今すぐお寄せください – arccc
あなたはすべての画像フォーマットについてこの質問を再入力しますか? –