ChatGPTへ新規の質問をいくつか投げてみましょう。
ここでは、C#とOpenCVSharpを利用し、簡単なフィルター処理のプログラムをChatGPTへ生成させます。
ChatGPTへ質問
以下の質問を新規チャットで一回で入力します。
OpenCVSharpを使ってフィルター処理を行いたい。
wpfを使い画像はバインドしたい
ファイル処理とフィルター処理はメニューを追加してください。
すると、ソースリストが示されます。
プロジェクトの生成とOpenCVsharpのインストール
これまでに説明した方法でVisual Studio を使用し、プロジェクトを作成します。NuGetでOpenCVSharpを導入するのも同じです。分からない場合はChatGPTへ質問すると教えてくれます。不明な点はChatGPTへ質問してください。NuGetで導入するのは、
OpenCvSharp4.WpfExtensions
OpenCvSharp4.Windows
ChatGPTが生成したソースコード
以降に、ChatGPTが生成したソースコードを示します。Visual Studio が生成したMainWindow.xamlとMainWindow.xaml.csへ上書きします。
MainWindow.xaml
<Window x:Class="OpenCVSharpFilterDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:OpenCVSharpFilterDemo" mc:Ignorable="d" Title="OpenCVSharp Filter Demo" Height="450" Width="800"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Menu Grid.Row="0"> <MenuItem Header="_File"> <MenuItem Header="_Open Image" Click="OpenImage_Click"/> </MenuItem> <MenuItem Header="_Filter"> <MenuItem Header="_Apply Filter" Click="ApplyFilter_Click"/> </MenuItem> </Menu> <Image x:Name="imgPreview" Grid.Row="1" Stretch="Uniform"/> </Grid> </Window>
MainWindow.xaml.cs
using System; using System.Windows; using Microsoft.Win32; using OpenCvSharp; using OpenCvSharp.WpfExtensions; namespace OpenCVSharpFilterDemo { //public partial class MainWindow : Window public partial class MainWindow : System.Windows.Window { private Mat originalImage; public MainWindow() { InitializeComponent(); } private void OpenImage_Click(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Image files (*.png;*.jpeg;*.jpg;*.bmp)|*.png;*.jpeg;*.jpg;*.bmp|All files (*.*)|*.*"; if (openFileDialog.ShowDialog() == true) { originalImage = new Mat(openFileDialog.FileName); imgPreview.Source = originalImage.ToBitmapSource(); } } private void ApplyFilter_Click(object sender, RoutedEventArgs e) { if (originalImage == null) { MessageBox.Show("Please open an image first.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } // Apply filter (example: Gaussian Blur) Mat filteredImage = new Mat(); //Cv2.GaussianBlur(originalImage, filteredImage, new Size(5, 5), 0); Cv2.GaussianBlur(originalImage, filteredImage, new OpenCvSharp.Size(5, 5), 0); imgPreview.Source = filteredImage.ToBitmapSource(); } } }
MainWindow.xaml.csのコードは2行を修正します。ChatGPTが生成した以下の2行はnamespaceが曖昧です。
public partial class MainWindow : Window
Cv2.GaussianBlur(originalImage, blurredImage, new Size(5, 5), 0);
public partial class MainWindow : System.Windows.Window
Cv2.GaussianBlur(originalImage, blurredImage, new OpenCvSharp.Size(5, 5), 0);
たった2箇所のnamespaceを追加しただけで、OpenCVSharpを使いフィルター処理を行うwpfプログラムが完成します。