2015-10-20 75 views
-1

在getpixel函数中出现错误.....虽然使用了图像比较所需的所有命名空间.....我在Visual Studio 2013中制作了Windows应用程序.... 和do我需要定义的任何地方与getPixel()函数...获取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); 
     } 
    } 
} 

回答

0

你会在该行

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

这是因为wb1WriteableBitmap类型的

得到一个错误
private double get_Percentage_Method(WriteableBitmap wb1, WriteableBitmap wb2) 

这反过来是因为WriteableBitmap类没有GetPixel()方法,您可以在the MSDN documentation中看到。要么使用另一个类作为输入(例如,一个普通的ImageBitmap已经可以),或者通过使用CopyPixels()方法(MSDN)来解决此问题,在该方法中,您必须将所需像素的坐标数组与其他数据图像相关参数。

+0

感谢的像素为这么多的帮助,另一个问题....请详细说明更多...我已经替换的BitmapImage类WriteableBitmap的类.....但它仍然给出相同的错误。 – abhishek

+0

如何获取WriteableBitmap的像素? – abhishek