gpt4 book ai didi

c# - 显示视频帧和 RenderTargetBitmap 位置

转载 作者:行者123 更新时间:2023-11-30 22:58:27 25 4
gpt4 key购买 nike

我正在尝试从网络摄像头裁剪图像并显示在摄像头预览旁边。

裁剪图像应考虑 3 个方面。

  1. 裁剪后的图像输出格式应为VideoFrame
  2. 上面的输出 VideoFrame 需要显示(在 XAML 上)
  3. 目标裁剪图像在原始图像的中间

我发现 RenderTargetBitmap 可以帮助我获得裁剪后的图像。

但我仍然不知道如何显示 VideoFrame(不保存图像),设置裁剪位置。

我卡在下面了...

    public async Task<VideoFrame> CroppingImage(Grid grid)
{
RenderTargetBitmap renderBitmap = new RenderTargetBitmap();

await renderBitmap.RenderAsync(grid);
var buffer = await renderBitmap.GetPixelsAsync();
var softwareBitmap = SoftwareBitmap.CreateCopyFromBuffer(buffer, BitmapPixelFormat.Bgra8, renderBitmap.PixelWidth, renderBitmap.PixelHeight, BitmapAlphaMode.Ignore);

buffer = null;
renderBitmap = null;

VideoFrame vf = VideoFrame.CreateWithSoftwareBitmap(softwareBitmap);
await CropAndDisplayInputImageAsync(vf);

return cropped_vf;
}


private async Task CropAndDisplayInputImageAsync(VideoFrame inputVideoFrame)
{
//some cropping algorithm here
//i have a rectangle on a canvas(camera preview is on CaptureElement)
//I know the left top position and width and height but no idea how to use
}

有什么帮助吗?

这是我发现并完成的:)

(假设有一个名为croppedface的视频帧)

        croppedFace = new VideoFrame(BitmapPixelFormat.Bgra8, (int)width, (int)height, BitmapAlphaMode.Ignore);

await inputVideoFrame.CopyToAsync(croppedFace, cropBounds, null);

SoftwareBitmap asdf = croppedFace.SoftwareBitmap;
asdf = SoftwareBitmap.Convert(asdf, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore);
var qwer = new SoftwareBitmapSource();
await qwer.SetBitmapAsync(asdf);
CroppedFaceImage.Source = qwer;

最佳答案

But still I have no idea how to display VideoFrame(without saving an image), set the position where to crop.

如果你想在xaml上显示框架,你需要将框架转换为可显示的格式并渲染到屏幕上。请查看 FrameRender官方相机框架示例中的类。它有一个 ConvertToDisplayableImage 方法,应该是您想要的。

然后,您可以在图像控件中显示它。之后,您可以使用 Image.Clip设置要裁剪的位置。

关于c# - 显示视频帧和 RenderTargetBitmap 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53003530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com