نوشته شده توسط
bita_naz
بسیار ممنون از راهنمایی شما
سورس اولی فقط Select هست و Crop نداره.
ولی یک مشکلی که با اون سورس دارم اینه که پس از انتخاب یک قسمت توسط کاربر میخام اون مستطیل سر جاش بمونه و از بین نره. یک کلید بذارم واسه Clear کردنش. فکر کنم باید رویداد MousUp رو دستکاری کرد.
لطفا سورس مقایسه رو هم بدید. حساسیت 100% یعنی چی؟
آیا میشه بعد از مقایسه میزان شباهت رو بر حسب درصد مشخص کرد؟
ضمنا فکر کنم در روش شما ابتدا باید سایز دو تصویر رو یکی کرد. اگه سورس اونم دارید ممنون میشم.
این از بریدن عکس (البته مختصات خیلی دقیق نیست)
int x, y, x2, y2;
bool state = false;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
state = true;
x = e.X;
y = e.Y;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (state == true)
{
Graphics a = pictureBox1.CreateGraphics();
pictureBox1.Refresh();
a.DrawRectangle(Pens.Red, x, y, e.X, e.Y);
}
}
private static Image cropImage(Image img, Rectangle cropArea)
{
Bitmap bmpImage = new Bitmap(img);
Bitmap bmpCrop = bmpImage.Clone(cropArea, bmpImage.PixelFormat);
return (Image)(bmpCrop);
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
state = false;
Graphics a = pictureBox1.CreateGraphics();
pictureBox1.Refresh();
System.Drawing.Drawing2D.HatchBrush Br = new System.Drawing.Drawing2D.HatchBrush(System.Drawing .Drawing2D.HatchStyle.Weave, Color.Red, Color.Transparent);
a.FillRectangle(Br, x, y, e.X, e.Y);
a.DrawRectangle(Pens.Blue, x, y, e.X, e.Y);
pictureBox2.Image = cropImage(pictureBox1.Image, new Rectangle(x +36 , y + 100, e.X + 160, e.Y + 350));
}
اینم از مقایسه دوتا عکس :
bool a = true;
Bitmap pic1 = new Bitmap(pictureBox3.Image);
Bitmap pic2 = new Bitmap(pictureBox4.Image);
for (int i = 0; i <= pictureBox3.Width; i++)
{
for (int j = 0; j <= pictureBox3.Height; j++)
{
Color a1, a2;
a1 = pic1.GetPixel(i, j);
a2 = pic2.GetPixel(i, j);
if (a1 != a2)
{
a = false;
}
}
}
if (a == false)
{
MessageBox.Show("یکی نیستند");
}
else
{
MessageBox.Show("یکی هستند");
}