2

オプションはありますか?モノタッチでは動作しません。AForge*.dllから欠落しているいくつかの関数のようです。今、私はOpenCVを見ていますが、そのような単純な問題には複雑すぎます。しかし、それでも非常に興味深い:)

さて、問題はありません。github.comSystem.Drawing.Bitmap / mono /からビルドしましたが、機能しました。ただし、AForgeフレームワークに関連するエラーがあります。フィルタを適用しようとすると、次のエラーが発生します。Bitmap Apply (Bitmap image)AForge.Imaging.Filters.BaseFilter

エラーCS0584:内部コンパイラエラー:メソッドが見つかりません:'AForge.Imaging.UnmanagedImage.CollectActivePixels'。(CS0584)(projectName)

AForge.Imaging.Filters.Sepiaまた、またはを使おうとするとInvert、コンパイラはそれらを見つけることができませんでした。

エラーCS0584:内部コンパイラエラー:タイプAForge.Imaging.Filters.Sepia' from AForge.Imaging、Version = 2.2.4.0、Culture = neutral、PublicKeyToken = ba8ddea9676ca48b'(CS0584)(projectName)をインポートできませんでした

興味深いのは、AForge.Imaging.Filters.Grayscale見つかったことです。

これらのエラーを生成するコードは次のとおりです。

これにより、「タイプをインポートできませんでした」というエラーが発生します。

partial void showFilters (MonoTouch.Foundation.NSObject sender)
    {
        UIActionSheet sheet = new UIActionSheet ("Filters");
        // @TODO: I'll hardcode filters for now, but in future it should be refactored out.
        sheet.AddButton ("Grayscale");
        sheet.AddButton ("Sepia");
        sheet.AddButton ("Invert");
        sheet.Clicked += 
            (sndr, e) => {
            var ev = (UIButtonEventArgs)e;
            switch (ev.ButtonIndex) {
            case 0:
                imageView.Image = ImageProcessor.process (imageView.Image, new Grayscale(0.2125, 0.7154, 0.0721));
                break;
            case 1:
                imageView.Image = ImageProcessor.process (imageView.Image, new Sepia());
                break;
            case 2:
                imageView.Image = ImageProcessor.process (imageView.Image, new Invert());
                break;
            }
            imageView.Image.SaveToPhotosAlbum((image, error) => {
                var o = image as UIImage;
                Console.WriteLine("error:" + error);
            });
        };
        sheet.ShowInView (this.View);
    }

最初の3つの関数は、「メソッドが見つかりません:'AForge.Imaging.UnmanagedImage.CollectActivePixels'。:

    #region methods
    static public Bitmap process (String fileName, IFilter filter)
    {
        if (File.Exists (fileName)) {
            Bitmap bitmap = Bitmap.FromFile (fileName);
            Bitmap image = (Bitmap) filter.Apply (bitmap);
            return image;
        } else {
            throw (new FileNotFoundException());
        }
    }

    static public Bitmap process (String fileName, FiltersSequence seq)
    {
        if (File.Exists (fileName)) {
            Bitmap image = Bitmap.FromFile (fileName);
            image = seq.Apply (image);
            return image;
        } else {
            throw (new FileNotFoundException());
        }
    }
    #region iOS
    static public UIImage process (UIImage capturedImage, IFilter filter)
    {
        Bitmap bitmap = getBitmapFromUIImage (capturedImage);
        Bitmap image = (Bitmap) filter.Apply (bitmap);
        UIImage result = getUIImageFromBitmap (image);
        return result;
    }

    static public Bitmap getBitmapFromUIImage (UIImage capturedImage)
    {
        NSData imageData = capturedImage.AsPNG();
        Byte[] byteArray = new Byte[imageData.Length];
        System.Runtime.InteropServices.Marshal.Copy (imageData.Bytes,
                                                     byteArray,
                                                     0,
                                                     Convert.ToInt32 (imageData.Length));
        MemoryStream stream = new MemoryStream (byteArray);
        Bitmap bitmap = new Bitmap (stream, false);
        return bitmap;
    }

    static public UIImage getUIImageFromBitmap (Bitmap bitmap)
    {
        Byte[] byteArray;
        MemoryStream stream = new MemoryStream();
        bitmap.Save(stream);
        stream.Close();
        byteArray = stream.ToArray();
        NSData imageData = NSData.FromArray(byteArray);
        return UIImage.LoadFromData(imageData);
    }
    #endregion iOS
    #endregion methods

}

そしてエラーの完全なリスト:

Error CS0584: Internal compiler error: Could not import type `AForge.Imaging.Filters.Sepia' from `AForge.Imaging, Version=2.2.4.0, Culture=neutral, PublicKeyToken=ba8ddea9676ca48b' (CS0584) (tryingImageProcessing)
Error CS0584: Internal compiler error: Could not import type `AForge.Imaging.Filters.Invert' from `AForge.Imaging, Version=2.2.4.0, Culture=neutral, PublicKeyToken=ba8ddea9676ca48b' (CS0584) (tryingImageProcessing)
Error CS0584: Internal compiler error: Method not found: 'AForge.Imaging.UnmanagedImage.CollectActivePixels'. (CS0584) (tryingImageProcessing)
Error CS0266: Cannot implicitly convert type `object' to `System.Drawing.Bitmap'. An explicit conversion exists (are you missing a cast?) (CS0266) (tryingImageProcessing)

修復が簡単なため、最後のエラーについては何も言いませんでしたが、なぜ表示されるのか理解できません。それは泣きます:

Bitmap image = ((BaseFilter) filter).Apply (bitmap);

そして、私が使用するすべての行Apply

これはプロジェクト自体です(Monodevelop、zip形式)。

回答: Monodevelop。アセンブリブラウザから表示されるメソッドが見つかりません。(CS0584)

4

0 に答える 0