C#の画像処理に関する驚くべきガイドについては、このリンクに従ってください。提出したユーザーを閲覧すると、ガイドの6つの部分すべてを見つけることができます。
http://www.codeproject.com/Articles/1989/Image-Processing-for-Dummies-with-C-and-GDI-Part-1
ガイドでは、画像データにアクセスするための、安全でないコードを使用する方法を示します。私は、安全なコードを保持し、次のように別の方法を使用することを好む:
Bitmap b = new Bitmap(img1);
BitmapData bitmapData = b.LockBits(
new Rectangle(0, 0, b.Width, b.Height),
ImageLockMode.ReadWrite,
PixelFormat.Format24bppRgb
);
int numPixels = b.Width * b.Height;
byte[] pixels = new byte[numPixels * 3]; // 3 bytes per pixel
Marshal.Copy(bitmapData.Scan0, pixels, 0, pixels.Length);
// Use this method to apply an effect to each pixel individually
for (int i = 0; i < pixels.Length; i++)
{
byte value = pixels[i];
// modify value
pixels[i] = value;
}
// Use this method to apply an effect that considers RGB relationship
byte red, green, blue;
for (int i = 0; i < pixels.Length; i += 3)
{
blue = pixels[i];
green = pixels[i + 1];
red = pixels[i + 2];
// modify values
pixels[i] = blue;
pixels[i + 1] = green;
pixels[i + 2] = red;
}
Marshal.Copy(pixels, 0, bitmapData.Scan0, pixels.Length);
b.UnlockBits(bitmapData);
それぞれ異なる画像処理技術は、C#の特異的ではありません。アルゴリズムの基本的な理解で、このコードでそれを適用できるはずです。
はDanielA.White @:私は今、仕事をするとsetPixel一緒にハッキング()メソッドを持っているが、それは時間がかかりすぎます。 – Mark