【发布时间】:2015-12-20 20:38:38
【问题描述】:
我正在使用 cor_xy 从 originalmaster(webcam) 和 color_xy_processada 获取颜色以在图片框上显示颜色。
我正在使用图像中的 x,y(e.X 和 e.Y),但它给了我错误的颜色。
可能是因为图像在 Y 轴上反转了 180 度并被拉伸了?我不知道,也许是代码。
cor_xy = new Bitmap(originalmaster.Image);//cria imagem para mostrar a cor na posicao x,y
int posX = e.X; //coordenadas x
int posY = e.Y; //coordenadas y
//mostra nas labels
lblratox.Text = posX.ToString();
lblratoy.Text = posY.ToString();
Color Get_Color = cor_xy.GetPixel(posX, posY);//verifica a cor em x,y
int a = Get_Color.A;
int r = Get_Color.R;
int g = Get_Color.G;
int b = Get_Color.B;
Color _color = Color.FromArgb(a, r, g, b);
//Mostra nas labels
lblr.Text = r.ToString();
lblg.Text = g.ToString();
lblb.Text = b.ToString();
lbla.Text = a.ToString();
cor_xy_processada = new Bitmap(selecao_cor.Image);
for (int i = 0; i < cor_xy_processada.Width; i++) //percorre a imagem
{
for (int j = 0; j < cor_xy_processada.Height; j++)
{
cor_xy_processada.SetPixel(i, j, _color);
}
}
selecao_cor.Image = cor_xy_processada;
图像被翻转和拉伸。它是 640x360 的图像,图片框是 320x180:
originalmaster.Image.RotateFlip(RotateFlipType.Rotate180FlipY) originalmaster.SizeMode = PictureBoxSizeMode.StretchImage;
我不知道网络摄像头的图像分辨率。也许有更好的方法来显示图像并保持 1:1 的缩小比例?
编辑:如果我使用自动大小,它可以工作
originalmaster.SizeMode = PictureBoxSizeMode.AutoSize.
或者如果
currentFrame = grabber.QueryFrame().Resize(320, 240,Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
但现在图像非常模糊......
但问题仍然存在。我不能使用 AutoSize,因为它几乎涵盖了所有应用程序大小。 任何想法如何将网络摄像头图像缩小到图片框的位图?
【问题讨论】:
-
我在您的这部分代码中没有看到错误。你能提供更多信息吗?图像是否缩放?它是如何缩放的?你得到什么颜色,你期望什么?你在像素 (0, 0) (0, width) (0, height) 和 (width, height) 上得到什么颜色?绿色环是什么,白色箭头应该显示什么?
-
箭头显示我点击的位置。而戒指就忘了它,没什么
-
也可能存在转换问题,但如果不知道您所获得的数据与您对相应像素的预期数据,就无法判断。
-
请看我的编辑。