代码如下:
static void Main(string[] args)//
{
Mat src = new Mat();
int value = 0;
Size size = new Size(500,500);
//src = new Mat(size, MatType.CV_8UC3);
src = Mat.Zeros(size,MatType.CV_8UC3);
Cv2.NamedWindow("image");
Cv2.CreateTrackbar("R", "image", ref value, 255);
Cv2.CreateTrackbar("G", "image", ref value, 255);
Cv2.CreateTrackbar("B", "image", ref value, 255);
Cv2.CreateTrackbar("swith", "image", ref value, 1);
int key, r, g, b, s;
while (true)
{
Cv2.ImShow("image", src);
key = Cv2.WaitKey(1);
if (key == 27) break;//27即为Esc键
System.Threading.Thread.Sleep(1);
r = Cv2.GetTrackbarPos("R", "image");
g = Cv2.GetTrackbarPos("G", "image");
b = Cv2.GetTrackbarPos("B", "image");
s = Cv2.GetTrackbarPos("swith", "image");
Vec3b vec3B;
if (s == 0)
{
vec3B = new Vec3b(0, 0, 0);
for (int Rows = 0; Rows < src.Rows; Rows++)
{
for (int Cols = 0; Cols < src.Cols; Cols++)
{
src.Set<Vec3b>(Rows, Cols, vec3B);
}
}
}
else
{
vec3B = new Vec3b((byte)b, (byte)g, (byte)r);
for (int Rows = 0; Rows < src.Rows; Rows++)
{
for (int Cols = 0; Cols < src.Cols; Cols++)
{
src.Set<Vec3b>(Rows, Cols, vec3B);
}
}
}
}
Cv2.WaitKey();
}
效果如下:
拖动三个轨迹栏,图片会显示出相应的颜色