Untitled
unknown
csharp
a year ago
2.6 kB
3
Indexable
using System; using System.Drawing; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; using S7.Net; class Program { static void Main(string[] args) { // Kameradan görüntü almak için bir VideoCapture nesnesi oluşturun VideoCapture capture = new VideoCapture(0); // 0, varsayılan kamera için // Eğer kamera başlatılamazsa, hata mesajı ver ve çık if (!capture.IsOpened) { Console.WriteLine("Kamera başlatılamadı."); return; } // CascadeClassifier ile nesne tespiti için bir sınıflandırıcı yükleyin CascadeClassifier faceCascade = new CascadeClassifier("haarcascade_frontalface_default.xml"); // PLC'ye bağlanma ayarları var plc = new Plc(CpuType.S71200, IPAddress.Parse("PLC_IP_ADRESI"), rack: 0, slot: 2); try { // PLC'ye bağlan plc.Open(); while (true) { // Kameradan bir kare al Mat frame = new Mat(); capture.Read(frame); // Kameradan gelen görüntüyü işleme if (!frame.IsEmpty) { // Yüz tespiti yap var grayFrame = new Mat(); CvInvoke.CvtColor(frame, grayFrame, ColorConversion.Bgr2Gray); var faces = faceCascade.DetectMultiScale(grayFrame, 1.1, 3); // Tespit edilen nesne (örneğin, yüz) koordinatlarını alın foreach (var face in faces) { int x = face.X; int y = face.Y; // Koordinatları Siemens PLC'ye yazma işlemi plc.Write("DB1.DINT0", x); // X koordinatını yaz plc.Write("DB1.DINT4", y); // Y koordinatını yaz } // Görüntüyü göster CvInvoke.Imshow("Nesne Tespiti", frame); } // Klavyeden "ESC" tuşuna basılırsa döngüyü kır if (CvInvoke.WaitKey(1) == 27) break; } } catch (Exception ex) { Console.WriteLine("Hata: " + ex.Message); } finally { // Kamerayı kapat capture.Dispose(); CvInvoke.DestroyAllWindows(); // PLC bağlantısını kapat plc.Close(); } } }
Editor is loading...