WPF OpenCVSharp4 maximize window and adjust image proportionally

Install-Package OpenCVSharp4
Install-Package OpenCVSharp4.runtime.win
using System.IO;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using OpenCvSharp;
using Rect = OpenCvSharp.Rect;
using Window = System.Windows.Window;

namespace WpfApp52
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.Visibility = Visibility.Hidden; 
            var imgs = Directory.GetFiles(@"../../../Images");
            foreach(var imgFile in imgs)
            {
                OpenCVShowImg(imgFile);
            }
            Cv2.DestroyAllWindows();
        }

        void OpenCVShowImg(string imgUrl)
        {
            Mat mat = Cv2.ImRead(imgUrl, ImreadModes.Color);
            if(mat==null ||mat.Empty())
            {
                MessageBox.Show($"Read {imgUrl} failed!");
                return;
            }

            string winName = "image";
            Cv2.NamedWindow(winName, WindowFlags.GuiExpanded );
            Cv2.SetWindowProperty(winName, WindowPropertyFlags.Fullscreen, (double)WindowFlags.FullScreen);


            Rect winRect= Cv2.GetWindowImageRect(winName);
            int winWidth = winRect.Width;
            int winHeight = winRect.Height;

            double scaleX = (double)winHeight / mat.Cols;
            double scaleY = (double)winHeight / mat.Rows;
            double scale = Math.Min(scaleX, scaleY);

            Mat resizeMat = new Mat();
            Cv2.Resize(mat, resizeMat, new OpenCvSharp.Size(0, 0), scaleX, scaleY, InterpolationFlags.Area);

            Cv2.ImShow(winName, resizeMat);
            Cv2.WaitKey(0);

            mat.Release();
            resizeMat.Release();     
        }
    }
}

 

 

 

 

 

 

 

image

 

 

 

image

 

posted @ 2026-01-20 21:38  FredGrit  阅读(0)  评论(0)    收藏  举报