激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

高校合作1:010-59833514 ?咨詢電話:400-810-1418 服務(wù)與監(jiān)督電話:400-810-1418轉(zhuǎn)接2

用C#和OpenCvSharp實現(xiàn)圖片裁剪功能,WinForms應(yīng)用程序C# OpenCvSharp 圖形處理

發(fā)布時間:2024-07-29 14:41:22 瀏覽量:259次

摘要


想要在WinForms應(yīng)用程序中使用C#和OpenCvSharp實現(xiàn)圖片裁剪功能嗎?其實很簡單,只需通過一個簡單的WinForms界面就可以完成這個任務(wù)。

Mat類是OpenCvSharp中用于表示圖像和矩陣的核心類,你可以利用它來加載、保存、裁剪和處理圖像。

  • Mat(string fileName):用于加載圖像文件。
  • SaveImage(string fileName):用于將圖像保存到文件。
  • Rect:用于表示矩形區(qū)域。
  • new Mat(Mat source, Rect roi):用于裁剪圖像。

正文


首先需要在nuget中安裝OpenCvSharp4,在此過程中記得引用OpenCvSharp4.runtime.win庫,避免出現(xiàn)錯誤提醒,比如DllNotFoundException: Unable to load DLL 'OpenCvSharpExtern' or one of its dependencies。

同時,也要記得引用OpenCvSharp.Extensions庫,確保可以順利進行圖片處理。

下面是一個示例代碼,展示了如何進行圖像裁剪操作:

private void btnCrop_Click(object sender, EventArgs e){    Mat sourceImage;    // 將Image對象轉(zhuǎn)換為Mat對象    Mat matFromImage = BitmapConverter.ToMat(new Bitmap(pic.Image));    if(matFromImage!=null )    {        int x = 0;        int y = 0;        int width = 100;        int height = 100;           x =int.Parse( txtPostion.Text.Split(",")[0]);        y = int.Parse(txtPostion.Text.Split(",")[1]);        Rect cropRegion = new Rect(x, y, width, height);        Mat croppedImage = new Mat(matFromImage, cropRegion);        SaveFileDialog saveFileDialog = new SaveFileDialog();        saveFileDialog.Filter = "JPEG Image|*.jpg";        if (saveFileDialog.ShowDialog() == DialogResult.OK)        {            croppedImage.SaveImage(saveFileDialog.FileName);            MessageBox.Show("裁剪完成并保存。");        }        croppedImage.Release();    }}

除了裁剪操作,也可以對圖像進行區(qū)域截取,如下代碼所示:

private void btnCrop_Click(object sender, EventArgs e){    Mat sourceImage = BitmapConverter.ToMat(new Bitmap(pic.Image));    //創(chuàng)建一個與原始圖像相同大小的黑色圖像,這將作為我們的圓形掩碼    Mat mask = new Mat(sourceImage.Size(), MatType.CV_8U, new Scalar(0));    //在掩碼上繪制一個白色的圓形:    OpenCvSharp.Point center = new OpenCvSharp.Point(mask.Cols / 2, mask.Rows / 2); // 圓心坐標(biāo)    int radius = Math.Min(mask.Cols, mask.Rows) / 2; // 半徑,取圖像寬度和高度的最小值的一半    Cv2.Circle(mask, center, radius, Scalar.White, -1); // -1 表示填充圓形    Mat result = new Mat();    sourceImage.CopyTo(result, mask);    //將Mat轉(zhuǎn)換為Image    Bitmap bitmap = BitmapConverter.ToBitmap(result);    pictureBox1.Image= bitmap;}

以上就是關(guān)于使用C#和OpenCvSharp實現(xiàn)圖片裁剪功能的內(nèi)容,希望能為你提供幫助。

想要了解更多關(guān)于數(shù)字藝術(shù)教育的內(nèi)容嗎?歡迎點擊點擊咨詢,了解火星時代教育提供的游戲設(shè)計培訓(xùn)、動畫培訓(xùn)、UI設(shè)計培訓(xùn)等課程。

熱門課程推薦

熱門資訊

請綁定手機號

x

同學(xué)您好!

您已成功報名0元試學(xué)活動,老師會在第一時間與您取得聯(lián)系,請保持電話暢通!
確定