vb.net 2010 ile opencv nin .net ortamında kullanılması için türetilmiş emgucv http://www.emgu.com/wiki/index.php/Main_Page (http://www.emgu.com/wiki/index.php/Main_Page) yi bilgisayarıma yükledim. örneklerden yola çıkarak fotolarla felan çalıştım.
ama ilkkez webcam den görüntü almaya çalıştığımda hatalarla karşılaştım.
amacım şunu yapmak.
OpenCV tutorial 6: Emgu CV with Visual Basic (http://www.youtube.com/watch?v=OwKTqRcyAV0#ws)
Herşeyi yapmama rağmen (toolları eklemek, kütüphaneleri eklemek felan) devamlı şu hatayı alıyorum
önce "The type initializer for 'Emgu.CV.CvInvoke' threw an exception." (bunu aradım genelde x64 x86 probleminden kaynaklandığı anlatılmış.)
conrasında "Object reference not set to an instance of an object." new ile oluşturmamışsın diyor. (imgOriginal = capWebcam.QueryFrame() satırında)
Hata veren satırdan önce bir yerde yeni obje oluşturman gerekir;
capWebcam= new Capture()
halletim hocam.
problem kodlarda felan değil. eklentileri "copy always" dememden kaynaklanıyormuş.
http://file.emgu.com/wiki/index.php/Download_And_Installation (http://file.emgu.com/wiki/index.php/Download_And_Installation)
"For each of the included Dlls, left click on it, find the "Copy to Output Directory" option and select "Copy if newer"
emgucv vb.net (http://www.youtube.com/watch?v=ZMmNqr4rI6A#)
mesaj birleştirme:: 24 Ekim 2013, 17:25:00
farkettim saç kalmamış.
muhittin hocam "copy always" kaldırdınızmı ? yaptınızmı? Aynı adamın c# için olan videosunda adam "copy always" seçiyor. Bende sizden görünce bi deneme yapayım dedim ve aynı hatayı aldım :)
yetişemiyoruz hızına abi. Toplantıda anlatılacak güzel konular var anlaşılan ;)
face emguvb.net (http://www.youtube.com/watch?v=MUK_2qFuMzQ#)
mesaj birleştirme:: 25 Ekim 2013, 00:59:52
pek anlamıyorum bu işlerden ama, emgu nun kütüphanesi güzel yazılmış. kopyala yapıştır iyi gidiyor şimdilik.
mesaj birleştirme:: 25 Ekim 2013, 01:01:42
Alıntı yapılan: kantirici - 24 Ekim 2013, 20:12:27
muhittin hocam "copy always" kaldırdınızmı ? yaptınızmı? Aynı adamın c# için olan videosunda adam "copy always" seçiyor. Bende sizden görünce bi deneme yapayım dedim ve aynı hatayı aldım :)
Hocam
heryerde x64 yapıyoruz.
sonrasında referansları ekliyoruz
ve diğer dosyaları ekliyoruz. bu dosyaları copy if newer yapıyoruz. hata vermiyor.
@muhittin hocam ilk videonun proje dosyalarını paylaşmanız mümkünmü. Hazıra konalım :)
hemen.
mesaj birleştirme:: 25 Ekim 2013, 02:09:31
hocam yaklaşık 1 saat dedi. kodları versem.
mesaj birleştirme:: 25 Ekim 2013, 02:11:11
Imports Emgu.CV
Imports Emgu.CV.CvEnum
Imports Emgu.CV.Structure
Imports Emgu.CV.UI
Imports System.Drawing
Public Class Form1
Dim capWebcam As Emgu.CV.Capture
Dim blnCapturingInProgress As Boolean = False
Dim imgOriginal As Emgu.CV.Image(Of Bgr, Byte)
Dim imProcessed As Image(Of Gray, Byte)
Dim imgGray As Image(Of Gray, Byte)
Sub New()
InitializeComponent()
End Sub
Sub ProcessFrameAndUpdateGUI(ByVal sender As Object, ByVal arg As EventArgs)
Dim imgOriginal As Image(Of Bgr, Byte) = capWebcam.QueryFrame()
If (imgOriginal Is Nothing) Then
Return
End If
imProcessed = imgOriginal.InRange(New Bgr(0, 0, 175), New Bgr(100, 100, 255))
imProcessed = imProcessed.SmoothGaussian(9)
Dim circles As CircleF() = imProcessed.HoughCircles(New Gray(50), New Gray(50), 2, imProcessed.Height / 4, 10, 400)(0)
For Each circlef In circles
If txtXYradius.text <> "" Then
txtXYradius.AppendText(Environment.NewLine)
End If
txtXYradius.AppendText("ball Pasition x" + circlef.Center.X.ToString.PadLeft(4) + " Y position" + circlef.Center.Y.ToString.PadLeft(4) + ",radius " + circlef.Radius.ToString.PadLeft(4))
txtXYradius.ScrollToCaret()
CvInvoke.cvCircle(imgOriginal, New Point(CInt(circlef.Center.X), CInt(circlef.Center.Y)), 3, New MCvScalar(255, 255, 255), -1, LINE_TYPE.CV_AA, 0)
imgOriginal.Draw(circlef, New Bgr(Color.Blue), 2)
Next
ibOriginal.Image = imgOriginal
ibProcessed.Image = imProcessed
'----------------------------------------------------------------------
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
capWebcam = New Capture()
Catch ex As Exception
txtXYradius.Text = ex.Message
Return
End Try
AddHandler Application.Idle, New EventHandler(AddressOf Me.ProcessFrameAndUpdateGUI)
blnCapturingInProgress = True
End Sub
Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
If (Not capWebcam Is Nothing) Then
capWebcam.Dispose()
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If (blnCapturingInProgress = True) Then
RemoveHandler Application.Idle, New EventHandler(AddressOf Me.ProcessFrameAndUpdateGUI)
blnCapturingInProgress = False
Button1.Enabled = True
Else
AddHandler Application.Idle, New EventHandler(AddressOf Me.ProcessFrameAndUpdateGUI)
blnCapturingInProgress = True
Button1.Enabled = False
End If
End Sub
End Class
mesaj birleştirme:: 25 Ekim 2013, 02:12:19
formun üzerinde iki emgucv.image bir buton ve bir text var.
yanlış olan yerde buradan devam eder hallederiz.
Kodlar için teşekkür ederim Hocam. Bende imagebox ve histogrambox çıkmıyor. Nasıl eklediniz?
Edit : Hallettim hocam ui.dll dosyasını toolboxa ekliyormuşuz
2010 da az ugrasmamıştım openCV ile :) hocam bu VB de performans nasil ? ben C ile çalısıyordum, çok hızlı meretti... Bu arada C# için yapılan kütüphane o aralar çok fonksiyon içermiyodu egmuCV de nasıl?
Hocam vb.net kullaniyorum. Emgu, opencv ile birlikte kullaniliyor. Perf. Gayet iyi.
Bu Nalet le :D
Bir Kavanozun İçindeki lekeyi tespit edebilirmiyiz ?
Hocam matlab kullansan daha iyi değil mi ? İnceledim kolay gibi görünüyor bende benzeri bir projede kullanabilirim belki emgucv'yi ama şöyle bir durum var bu kadar işlem yaptıktan sonra matlab ile yaparım daha iyi gibi geliyor bana :) Çünkü ondada böyle formüller söz konusu.
Üniversitede yaptığımız bir uygulamada köprünün kollarında bulunan açıları hesap etmiştik :D
Baya fantastik şeyler yapıyorduk o yüzden kavanoz üzerindeki lekeleri bulmakta söz konusu olmaması gerekiyor.
Alıntı yapılan: MrDarK - 28 Ekim 2013, 15:07:30
Hocam matlab kullansan daha iyi değil mi ? İnceledim kolay gibi görünüyor bende benzeri bir projede kullanabilirim belki emgucv'yi ama şöyle bir durum var bu kadar işlem yaptıktan sonra matlab ile yaparım daha iyi gibi geliyor bana :) Çünkü ondada böyle formüller söz konusu.
Üniversitede yaptığımız bir uygulamada köprünün kollarında bulunan açıları hesap etmiştik :D
Baya fantastik şeyler yapıyorduk o yüzden kavanoz üzerindeki lekeleri bulmakta söz konusu olmaması gerekiyor.
Bu köprü olayını biraz daha açabilir miyiz ? MATLAB yada C ile yaptıysanız örnek dosyaları paylaşabilirmisiniz ?
matlap, sevmiyorum kod yazmayı çile çekmeyi seviyorum.
Sanki EMgu İle çözeriz gibi.
O zaman hocam önce resim içinde kavanozu ayırt etmeyi yapman lazım ondan sonra üzerinde farklı renk tonunda degerler arayacaksın :)
kavonoz u aramama gerek varmı, karanlık bir ortamda ultraviyole ışık versem ?
Olabilir tabi karanlık ortama gireyorsa ne güzel proje detayları sizin bilginiz dahilinde olduğu için her halükarda öncelikle bir kavanoz bulma olmalı :)
Denemek Gerek Ama Daha Ucuz Çözüm Bulmaya Çalışıyorum.