C# อธิบายวิธีทำกรอบ Image detect สีให้หน่อยครับ ตอนนี้สั่งให้เปิด webcam แล้วให้มันจับสีแดงได้แล้ว เหลือแค่ตีกรอบรอบสีแดงแล้วหาตำแหน่งจุดศูนย์กลางของกรอบ ใครรู้ช่วยหน่อยครับ
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.UI;
namespace Webcam_test
{
public partial class Form1 : Form
{
Capture capture;
public Form1()
{
InitializeComponent();
}
private void processing(object sender, EventArgs e)
{
Image<Bgr, Byte> MyImage = capture.QueryFrame();
Image<Hsv, Byte> Image_hsv = MyImage.Convert<Hsv, Byte>

);
Image<Gray, Byte> Image_BW = new Image<Gray, Byte>

Image_hsv.Width, Image_hsv.Height);
Image<Gray, Byte> colorlow = new Image<Gray, Byte>

Image_hsv.Width, Image_hsv.Height, new Gray(174));
Image<Gray, Byte> colorHight = new Image<Gray, Byte>

Image_hsv.Width, Image_hsv.Height, new Gray(255));
CvInvoke.cvInRange(Image_hsv[0], colorlow, colorHight, Image_BW);
CvInvoke.cvErode(Image_BW, Image_BW, (IntPtr)null, 4);
Image<Gray, Byte> bwcolor2 = new Image<Gray, Byte>

Image_hsv.Width, Image_hsv.Height);
CvInvoke.cvCopy(Image_BW, bwcolor2, System.IntPtr.Zero);
imageBox1.Image = MyImage;
imageBox2.Image = Image_BW;
}
private void button1_Click(object sender, EventArgs e)
{
capture = new Capture();
Application.Idle += processing;
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
}
}
C# อธิบายวิธีทำกรอบ Image detect สีให้หน่อยครับ
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.UI;
namespace Webcam_test
{
public partial class Form1 : Form
{
Capture capture;
public Form1()
{
InitializeComponent();
}
private void processing(object sender, EventArgs e)
{
Image<Bgr, Byte> MyImage = capture.QueryFrame();
Image<Hsv, Byte> Image_hsv = MyImage.Convert<Hsv, Byte>
Image<Gray, Byte> Image_BW = new Image<Gray, Byte>
Image<Gray, Byte> colorlow = new Image<Gray, Byte>
Image<Gray, Byte> colorHight = new Image<Gray, Byte>
CvInvoke.cvInRange(Image_hsv[0], colorlow, colorHight, Image_BW);
CvInvoke.cvErode(Image_BW, Image_BW, (IntPtr)null, 4);
Image<Gray, Byte> bwcolor2 = new Image<Gray, Byte>
CvInvoke.cvCopy(Image_BW, bwcolor2, System.IntPtr.Zero);
imageBox1.Image = MyImage;
imageBox2.Image = Image_BW;
}
private void button1_Click(object sender, EventArgs e)
{
capture = new Capture();
Application.Idle += processing;
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
}
}