【问题标题】:getting error in GetPixel() functionGetPixel() 函数出现错误
【发布时间】:2015-10-20 16:49:10
【问题描述】:

getpixel 函数出现错误.....虽然使用了图像比较所需的所有命名空间......我正在 Visual Studio 2013 中制作 Windows 应用程序...... 我是否需要在任何地方定义 getpixel() 函数...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using picture.Resources;
using System.Windows.Media.Imaging;
using System.Windows.Media;
using Microsoft.Expression.Drawing;

namespace picture {
    public partial class MainPage: PhoneApplicationPage {
        // Constructor

        public MainPage() {
            InitializeComponent();

            BitmapImage image1 = new BitmapImage();
            image1.SetSource(Application.GetResourceStream(new Uri(@
            "Assets/WP_20150925_09_20_03_Pro (2).jpg", UriKind.Relative)).Stream);
            BitmapImage image2 = new BitmapImage();
            image2.SetSource(Application.GetResourceStream(new Uri(@
            "Assets/WP_20150925_09_20_03_Pro.jpg", UriKind.Relative)).Stream);
            // Sample code to localize the ApplicationBar
            //BuildLocalizedApplicationBar();
        }


        private double get_Percentage_Method(WriteableBitmap wb1, WriteableBitmap wb2) {
            var img1 = wb1;
            var img2 = wb2;

            // Validation of image size code  
            int width1 = img1.PixelWidth;
            int width2 = img2.PixelWidth;
            int height1 = img1.PixelHeight;
            int height2 = img2.PixelHeight;
            if ((width1 != width2) || (height1 != height2)) {
                MessageBox.Show("Error: Images dimensions mismatch");
            }
            long diff = 0;
            for (int i = 0; i < width1; i++) {
                for (int j = 0; j < height1; j++) {
                    // get same position pixel of both WirtableBitmap Image object  
                    Color color1 = wb1.GetPixel(i, j);
                    Color color2 = wb2.GetPixel(i, j);
                    // converting each value iGetPixelnto Integer  
                    int r1 = (int) color1.R;
                    int g1 = (int) color1.G;
                    int b1 = (int) color1.B;
                    int r2 = (int) color2.R;
                    int g2 = (int) color1.G;
                    int b2 = (int) color1.B;
                    // calculating difference between RGB color value and adding it in Diff variable.  
                    diff += Math.Abs(r1 - r2);
                    diff += Math.Abs(g1 - g2);
                    diff += Math.Abs(b1 - b2);
                }
            }
            // Converting difference into percentage and then retun it.  
            double n = width1 * height1; //* 3;  
            double p = diff / n / 255.0;
            MessageBox.Show("diff percent: " + (p * 100.0));
            return (p * 100.0);
        }
    }
}

【问题讨论】:

    标签: c# visual-studio-2013 windows-phone-8.1


    【解决方案1】:

    你会在该行得到一个错误

      Color color1 = wb1.GetPixel(i, j);
    

    这是因为wb1

    中属于WriteableBitmap 类型
       private double get_Percentage_Method(WriteableBitmap wb1, WriteableBitmap wb2)
    

    这又是因为WriteableBitmap 类没有GetPixel() 方法,正如您在the MSDN documentation 中看到的那样。要么使用另一个类作为输入(例如,一个普通的ImageBitmap 已经可以),或者通过使用CopyPixels() 方法(MSDN)来解决它,您必须在其中传递一个坐标数组您想要的像素,以及其他与图像相关的参数。

    【讨论】:

    • 感谢您的帮助....请详细说明...我已将 WriteableBitmap 类替换为 BitmapImage 类.....但它仍然给出相同的错误..
    • 如何获取 WriteableBitmap 的像素?
    【解决方案2】:

    您的 wb1/wb2 的类型为 WriteableBitmap,但 WriteableBitmap 没有函数 GetPixel()。我假设你正在考虑Bitmap.GetPixel()

    我建议再问一个关于如何获取WriteableBitmap 像素的问题

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多