2013-08-04 17 views
9

kullanarak daha düşük bir önizlemede görüntülerken yüksek çözünürlükte webcam fotoğrafları yakalama Ben bir web kamerası QR kodları okumak için benim C# (4.0) app akışı için DirectShow.Net kullanıyorum. Herhangi bir QR kodu bulabilip bunları çözüp çözemeyeceğini görmek için her 5 saniyede bir anlık görüntü alıyor. Bu benim web kamerası almak herhangi bir çözünürlükte benim dev bilgisayar üzerinde harika çalışıyor, ama ben bir hedef makine (Panasonic CF-U1 Toughbook - Intel Atom işlemci) denerken, daha yüksek çözünürlüklere gittiğimde gerçekten batağa başlar Web kamerasından 800x600 daha.DirectShow.Net

DirectShow.Net DxSnap örneğinden Capture sınıfını kullanıyorum (Snapshot ad alanı). Önizlemeyi çizmek için ona bir Picturebox iletiyorum. Eminim ki bu sistemde bataklık yapan şeydir (video kartının sadece göreve gelmediğini tahmin etmek). Önizlemenin çizilmesine ihtiyacım var (böylece kullanıcılar taramaya çalıştıklarını görebilirler), ancak QR kodunu aramaya çekilen resim ile aynı çözünürlükte olmak zorunda değildir. Bu program düşük ekran çözünürlüklerine sahip cihazlar için yapıldığından, ön izleme kutusu 320 x 240'da maksimuma çıkar (fotoğraf makinesinde seçilen çözünürlüğe göre en-boy oranını ayarlıyorum).

  1. bir şekilde düşük res yüksek res at önizleme için ve bir de aynı kamerası, bir giden iki akışı yapmak:

    Ben de aşağıdakilerden herhangi olduğunu arıyorum tahmin belki

  2. (DirectShow.Net projesinden DxSnap örnekten Yakalama sınıfını kullanarak, bir kez daha) resim kutusuna yazılır alır hemen önce çözünürlüğünü azaltarak, bu eşittir yakalamak için

  3. şeyResim kutusunu çok fazla tazelendiğinden korumanın bir yolu

  4. Bu tür bir şey için DirectShow.Net'in kullanması gereken başka bir şey (Windows XP'den Windows 8'e masaüstü alanındaki her şeyle çalışması gerekir).

Yardımlarınız için teşekkürler.

+0

bunu hiç anladın mı? –

cevap

0
  1. Akışı bir SmartTee veya InfiniteTee kullanarak bölebilirsiniz, ancak ayrıldıktan sonra çözünürlüğü nasıl değiştireceğinizden emin değilim.
  2. Bunu nasıl yapacağınızdan emin değilsiniz.
  3. Görüntüleri yakalayabilir ve bunları SampleGrabber kullanarak manuel olarak fotoğraf kutusuna yerleştirebilirsiniz. Daha sonra, çerçeveler resim kutusunda gösterildiğinde tam kontrolünüz var.
  4. Eğer XP ve üstü istiyorsanız, DirectShow'u kullanmanız gerekir. MediaFoundation (modern alternatif) sadece Vista ve üstü.

Uygulamam, şu anda görüntüleri, kullanıcının gördüğü videonun çözünürlüğünden farklı bir çözünürlükte yakalamaktadır. Bunu yapıyorum çünkü kullandığım web kamerası (Logitech C920) hem farklı formatlarda video formatları olan bir Capture pin ve bir Still pinine sahip. Her bir pim için bağımsız kararlar alabiliyorum ve ihtiyacım olanı değiştirebiliyorum. Uygulamam sadece Still pin'in çözünürlüğü ile ilgilidir, bu yüzden Capture pininin her zaman 640 x 480'de kalmasını sağladım. Bence SmartTee'nin bir Still iğnesine ihtiyaç duymadan buna benzer bir şey yapması gerekiyordu, ama ben bir DirectShow gurusu değilim, bu yüzden bir başkasının seni bu bilgilerle doldurması gerekecek.