こんにちは。
Windows10, Visual Studio 2013 CommunityでWPFのアプリケーションを作っています。
NuGetで、OpenCVsharp2を入れました。
その画像をImageに表示したいです。
同じファイルをFormのSystem.Drawing.BitmapからWPFのBitmapSourceに変換した場合は表示できるのですが、同じようにOpenCVのIplimageをSystem.Drawing.Bitmapに変換したものをさらにWPFのBitmapSourceに変換すると、グレーのノイズの入った画像を表示します。
アドバイスお願いします。
using System; using System.Collections.Generic; using System.Linq; using System.Windows; using OpenCvSharp; using System.IO; using System.Drawing; using OpenCvSharp.UserInterface; using System.Windows.Media.Imaging; namespace WpfApplication1 { public partial class MainWindow : Window { string file = @"C:\image.jpg"; private void openCvButton_Click(object sender, RoutedEventArgs e) { image.Source = Bitmap2BitmapSource(file);//表示できる。 using (var img = new IplImage(file)) { Cv.SetImageROI(img, new CvRect(200, 200, 180, 200)); Cv.Not(img, img); Cv.ResetImageROI(img); using (new CvWindow(img)) { Cv.WaitKey();//OpenCVのwindowが開いて画像を表示できる。 } image.Source = Iplimage2BitmapSource(img);//グレーのノイズの入った画像を表示する。 } } private BitmapSource Iplimage2BitmapSource(IplImage img) { System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(img.Width, img.Height); OpenCvSharp.Extensions.BitmapConverter.ToBitmap(img, bmp); BitmapSource bitmapSource = Bitmap2BitmapSource(bmp); bmp.Dispose(); return bitmapSource; } private BitmapSource Bitmap2BitmapSource(string path) { System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(path); BitmapSource bitmapSource = Bitmap2BitmapSource(bmp); bmp.Dispose(); return bitmapSource; } [System.Runtime.InteropServices.DllImport("gdi32.dll")] public static extern bool DeleteObject(IntPtr hObject); public static BitmapSource Bitmap2BitmapSource(System.Drawing.Bitmap bitmap) { var hBitmap = bitmap.GetHbitmap(); BitmapSource source; try { source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); } finally { DeleteObject(hBitmap); } return source; } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/30 07:09
2016/06/30 07:22
2016/07/01 02:52