You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中调整RTSP流的视频尺寸(放大)

如何在C#中放大RTSP流的视频尺寸

你可以通过两种方式实现视频放大:一是在OpenCV层面对每一帧图像进行尺寸缩放(画质更好),二是通过PictureBox控件的属性直接拉伸显示(更简单)。

方法一:使用OpenCV的Resize方法处理帧(推荐)

在将Mat转为Bitmap之前,用Cv2.Resize()对帧进行缩放,这种方式能更好地控制放大后的画质。

修改后的代码示例:

video = new VideoCapture();
video.Open(rtspUrl);

// 设置目标放大尺寸,比如原始尺寸的2倍,或者固定宽高
int targetWidth = video.FrameWidth * 2;
int targetHeight = video.FrameHeight * 2;
// 或者固定尺寸:int targetWidth = 1280; int targetHeight = 720;

using (Mat image = new Mat())
{
    while (true)
    {
        if (!video.Read(image))
        {
            Cv2.WaitKey();
        }
        if (!image.Empty())
        {
            // 创建缩放后的Mat
            using (Mat resizedImage = new Mat())
            {
                // 执行缩放,InterpolationFlags.Cubic适合放大时保留细节
                Cv2.Resize(image, resizedImage, new Size(targetWidth, targetHeight), interpolation: InterpolationFlags.Cubic);
                Bitmap bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resizedImage);
                // 释放旧的Bitmap资源,避免内存泄漏
                pbStream.Image?.Dispose();
                pbStream.Image = bmp;
            }
        }
        if (Cv2.WaitKey(1) >= 0)
            break;
        if (isRun == false)
        {
            break;
        }
    }
}
video = null;

关键参数说明:

  • InterpolationFlags.Cubic:三次插值算法,放大时能比线性插值保留更多图像细节,适合视频放大场景。
  • 目标尺寸可以按比例设置(比如video.FrameWidth * 2),也可以直接指定固定宽高,注意保持宽高比避免画面变形。
  • 调用pbStream.Image?.Dispose()释放旧的Bitmap,防止内存泄漏。

方法二:通过PictureBox控件属性拉伸显示

如果不需要在图像层面处理,直接设置PictureBox的SizeMode属性即可:

// 初始化时设置一次
pbStream.SizeMode = PictureBoxSizeMode.Zoom; // 保持比例拉伸,填满控件
// 或者 pbStream.SizeMode = PictureBoxSizeMode.StretchImage; // 拉伸至控件大小,可能变形

这种方式无需修改帧处理逻辑,直接由控件完成拉伸,缺点是放大后的画质不如OpenCV处理的精细。

内容的提问来源于stack exchange,提问作者swiftbegineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:05:48