2011-09-29 14 views
6

Visual Studio 2010'da OpenCV \ Samples \ C klasöründe facedetect.cpp derlemeye çalışıyorum. Projeyi derler ve gayet iyi başlar, kameramın önizlemesini gösterir ve sonra bir yüz algıladığı anda cascade.detectMultiScale() de çökmek gibi görünüyor. OpenCV'nin çok çirkin olduğumu düşündüğü sonucuna vardım.OpenCV 2.1: facedetect.cpp çirkin bir yüz bulduğunda çöküyor

Unhandled exception at 0x100342bf in HeadTrackerExample.exe: 0xC0000005: Access violation writing location 0x00000000.

Maalesef hata ayıklama bilgisi bana derin soruşturma izin vermez. Cv210.lib; cxcore210.lib; highgui210.lib;

LDR: LdrpWalkImportDescriptor() failed to probe D:\OpenCV2.1\bin\cv210d.dll for its manifest, ntstatus 0xc0150002

Anne Hathaway çıktısı ile sınıflandırıcı kandırmak üzere gidiyorum ama diğer önerilere açığım: ayıklama sürümleri çalışmaz.

https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/facedetect.cpp

+2

Bir ipucu yok, ama espri anlayışı için +1. –

+0

Kodu çağırırsanız, aramanızı 'cascade.detectMultiScale()' olarak görebiliriz? Yoksa kod da çok çirkin mi? :-) – SSteve

+0

Kod şimdi soruyla bağlantılı! Gördüğünüz gibi, bu sadece dahil edilen örnek koddur, bu yüzden sistemimde veya proje yapılandırmamda bir sorun olabilir. –

cevap

0

Bu sorunu gidermek için günümü harcadım. Kim bilir, neden çöküyordu? Hata ayıklama DLL'lerine bağlantı kuramadım, böylece asla bilmeyeceğiz. OpenCV-2.1.0-win32-vs2008.exe dağıtımını indirdim. Ve nedenle Visual Studio 2010. kullanıyorum, exe Bu "0xc0150002 hata" dır

LDR: LdrpWalkImportDescriptor() failed to probe D:\OpenCV2.1\bin\cv210d.dll for its manifest, ntstatus 0xc0150002 Debugger:: An unhandled non-continuable exception was thrown during process load The program '[5172] HeadTrackerExample.exe: Native' has exited with code -1072365566 (0xc0150002).

ile çöküyordu. Bağımlılık Walker'a göre, OpenCV hata ayıklama DLL'leri msvcr90d.dll ve msvct90d.dll, Visual Studio 2008 hata ayıklama çalışma zamanı DLL'lerini bulmaya çalışıyor. Eh, bunları elde ettim ve hala işe yaramadı, bu yüzden bu ezoterik Windows sidebyside ve tezahürat şeyler içine alır.

OpenCV-2.3.1-win-superpack.exe dağıtımına geçtim ve şimdi çalışıyor.

1

Ben (OS X altında) burada çalışıyor çünkü senden daha iyi bakıyorum sanırım. Xml dosyalarını başarıyla yüklediğinize emin misiniz? Varsayılan xml dosyalarını mı kullanıyorsunuz (haarcascade_frontalface_alt.xml ve haarcascade_eye_tree_eyeglasses.xml)?

Elbette boş bir işaretçiniz var gibi görünüyor. cascade.detectMultiScale() numaralı çağrıya bir kesme noktası ayarlamayı deneyin ve cascade, smallImg, smallImg.data ve faces değerlerini inceleyin.

Düzenleme: tüm algılama yapılır

void HaarClassifierCascade::detectMultiScale(const Mat& image, 
         Vector<Rect>& objects, double scaleFactor, 
         int minNeighbors, int flags, 
         Size minSize) 
{ 
    MemStorage storage(cvCreateMemStorage(0)); 
    CvMat _image = image; 
    CvSeq* _objects = cvHaarDetectObjects(&_image, cascade, storage, scaleFactor, 
              minNeighbors, flags, minSize); 
    Seq<Rect>(_objects).copyTo(objects); 
} 

O faces vektör dokunmadan değil son satırına kadar sonra: İşte faces vektör

doldurma detectMultiScale kod. Maceralı iseniz, cvHaarDetectObjects'un tamamlanıp tamamlanmadığını ve boş bir gösterici döndürüp döndürmediğini görmek için printf ifadesini buraya atabilirsiniz.

+0

Evet, xml yükler iyi. İyi hata ayıklama ipucu, deneyeceğim. Ancak, detectMultiScale çağrısı başarılı bir şekilde tamamlanır * * bir yüz bulur, bu bana 'yüzler' vektörünü yerleştirmeye çalışırken sorun olduğunu düşünür (referans olarak erişilir) –