想法:因為系統需要由使用者動態調整亮度。
實作:
Code:
private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{ //sourceBgr&sourceHsv 事先建立
Image<Rgb, byte> rgb = sourceBgr.Clone();
Image<Hsv, byte> Hsv = sourceHsv.Clone();
CvInvoke.cvCvtColor(rgb, Hsv, Emgu.CV.CvEnum.COLOR_CONVERSION.CV_RGB2HSV);
int newValue=(int)e.NewValue; //取得slider事件發生後的值
string s = newValue.ToString();
label1.Content = s;
if (Hsv != null)
{
for (int j = 0; j < sourceHsv.Height; j++)
{
for (int i = 0; i < sourceHsv.Width; i++)
{
byte value=0;
if (Hsv.Data[j, i, 2] + newValue > 255) value = 255;
else if (Hsv.Data[j, i, 2] + newValue < 0) value = 0;
else value = (byte)(Hsv.Data[j, i, 2] + newValue);
Hsv.Data[j, i, 2] = value;
}
}
}
CvInvoke.cvCvtColor(Hsv, rgb, Emgu.CV.CvEnum.COLOR_CONVERSION.CV_HSV2RGB);
image1.Source = rgb.ToBitmapSource();
}
紀錄:Hsv的v(value)是亮度,只要調整它即可調整該PIXEL的亮度。
沒有留言:
張貼留言