İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. SDN Forum
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

OpenCV derleme sorunu

Konu bilgisi

6cevap
2.346görüntüleme
05.2012açıldı
16.05.2012son cevap

#1
merhaba arkadaşlar

#include <stdio.h>
#include "opencv/cv.h"
#include "opencv/highgui.h"

CvHaarClassifierCascade *cascade_f;
CvHaarClassifierCascade *cascade_e;
CvMemStorage            *storage;

void detectEyes(IplImage *img);

int main(int argc, char** argv)
{
    IplImage *img;
    char *file1 = "haarcascade_frontalface_alt.xml";
    char *file2 = "haarcascade_eye.xml";

    /* usage: eyedetect <image> */
    assert(argc == 2);

    /* load the face classifier */
    cascade_f = (CvHaarClassifierCascade*)cvLoad(file1, 0, 0, 0);

    /* load the eye classifier */
    cascade_e = (CvHaarClassifierCascade*)cvLoad(file2, 0, 0, 0);

    /* setup memory storage, needed by the object detector */
    storage = cvCreateMemStorage(0);

    /* load image */
    img = cvLoadImage(argv[1], 1);

    /* always check */
    assert(cascade_f && cascade_e && storage && img);

    cvNamedWindow(argv[1], 1);

    /* detect eyes and display image */
    detectEyes(img);
    cvShowImage(argv[1], img);

    cvWaitKey(0);
    cvDestroyWindow(argv[1]);
    cvReleaseImage(&img);

    return 0;
}

void detectEyes(IplImage *img)
{
    int i;

    /* detect faces */
    CvSeq *faces = cvHaarDetectObjects(
        img, cascade_f, storage,
        1.1, 3, 0, cvSize( 40, 40 ) );

    /* return if not found */
    if (faces->total == 0) return;

    /* draw a rectangle */
    CvRect *r = (CvRect*)cvGetSeqElem(faces, 0);
    cvRectangle(img,
                cvPoint(r->x, r->y),
                cvPoint(r->x + r->width, r->y + r->height),
                CV_RGB(255, 0, 0), 1, 8, 0);

    /* reset buffer for the next object detection */
    cvClearMemStorage(storage);

    /* Set the Region of Interest: estimate the eyes' position */
    cvSetImageROI(img, cvRect(r->x, r->y + (r->height/5.5), r->width, r->height/3.0));

    /* detect eyes */
    CvSeq* eyes = cvHaarDetectObjects( 
        img, cascade_e, storage,
        1.15, 3, 0, cvSize(25, 15));

    /* draw a rectangle for each eye found */
    for( i = 0; i < (eyes ? eyes->total : 0); i++ ) {
        r = (CvRect*)cvGetSeqElem( eyes, i );
        cvRectangle(img, 
                    cvPoint(r->x, r->y), 
                    cvPoint(r->x + r->width, r->y + r->height),
                    CV_RGB(255, 0, 0), 1, 8, 0);
    }

    cvResetImageROI(img);
}


kodunu netbeans ile derlediğimde "main.c:55:3: hata: 'cvHaarDetectObjects' işlevi için çok az argüman belirtildi" diye bir hata veriyor. ne yaptıysam olmadı. sorunu nasıl çözebilirim ?
Cevaplar
#2
sanırım argüman eşleşmesinde bir sorun var, fonksiyonun prototipini inceliyip doğru sayıda ve sıralamada argümanların yerleştirildiğinden emin olabilir misiniz acaba ?

ps: gözden kaçmış olabileceğini düşündüm, google'licam çözüm olmazsa... :D
mutahhar Konuyu açan
#3

build/Debug/MinGW-Windows/main.o: In function `cvDecRefData':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:134: undefined reference to `cvFree_'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:142: undefined reference to `cvFree_'
build/Debug/MinGW-Windows/main.o: In function `cvGetRow':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:184: undefined reference to `cvGetRows'
build/Debug/MinGW-Windows/main.o: In function `cvGetCol':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:195: undefined reference to `cvGetCols'
build/Debug/MinGW-Windows/main.o: In function `cvReleaseMatND':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:224: undefined reference to `cvReleaseMat'
build/Debug/MinGW-Windows/main.o: In function `cvSubS':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:498: undefined reference to `cvAddS'
build/Debug/MinGW-Windows/main.o: In function `cvCloneSeq':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:1059: undefined reference to `cvSeqSlice'
build/Debug/MinGW-Windows/main.o: In function `cvSetNew':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:1110: undefined reference to `cvSetAdd'
build/Debug/MinGW-Windows/main.o: In function `cvGetSetElem':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:1132: undefined reference to `cvGetSeqElem'
build/Debug/MinGW-Windows/main.o: In function `cvEllipseBox':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:1310: undefined reference to `cvEllipse'
build/Debug/MinGW-Windows/main.o: In function `cvFont':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:1401: undefined reference to `cvInitFont'
build/Debug/MinGW-Windows/main.o: In function `cvReadIntByName':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:1604: undefined reference to `cvGetFileNodeByName'
build/Debug/MinGW-Windows/main.o: In function `cvReadRealByName':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:1619: undefined reference to `cvGetFileNodeByName'
build/Debug/MinGW-Windows/main.o: In function `cvReadStringByName':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:1633: undefined reference to `cvGetFileNodeByName'
build/Debug/MinGW-Windows/main.o: In function `cvReadByName':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:1645: undefined reference to `cvGetFileNodeByName'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/core/core_c.h:1645: undefined reference to `cvRead'
build/Debug/MinGW-Windows/main.o: In function `cvContourPerimeter':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/imgproc/imgproc_c.h:364: undefined reference to `cvArcLength'
build/Debug/MinGW-Windows/main.o: In function `cvCalcHist':
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../include/opencv2/imgproc/imgproc_c.h:490: undefined reference to `cvCalcArrHist'
build/Debug/MinGW-Windows/main.o: In function `main':
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:21: undefined reference to `cvLoad'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:24: undefined reference to `cvLoad'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:27: undefined reference to `cvCreateMemStorage'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:30: undefined reference to `cvLoadImage'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:35: undefined reference to `cvNamedWindow'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:39: undefined reference to `cvShowImage'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:41: undefined reference to `cvWaitKey'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:42: undefined reference to `cvDestroyWindow'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:43: undefined reference to `cvReleaseImage'
build/Debug/MinGW-Windows/main.o: In functionmake[2]: Leaving directory `/c/Users/ndrshn/Documents/NetBeansProjects/CppApplication_1'
 `detectEyes':
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:53: undefined reference to `cvHaarDetectObjects'
make[1]: Leaving directory `/c/Users/ndrshn/Documents/NetBeansProjects/CppApplication_1'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:61: undefined reference to `cvGetSeqElem'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:62: undefined reference to `cvRectangle'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:68: undefined reference to `cvClearMemStorage'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:71: undefined reference to `cvSetImageROI'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:74: undefined reference to `cvHaarDetectObjects'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:80: undefined reference to `cvGetSeqElem'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:81: undefined reference to `cvRectangle'
C:\Users\ndrshn\Documents\NetBeansProjects\CppApplication_1/main.c:87: undefined reference to `cvResetImageROI'


şimdide bu hatayı veriyor. opencv'yi öğrenmeye niyetliyim lakin sorunlardan kurtulup bir türlü yazılmış örneği biler derleyemiyorum. linux'ta şansımı deneyeceğim artık
#4
Koda baktığım zaman

#include "opencv/cv.h"
#include "opencv/highgui.h"

satırlarını görüyorum. Projenin olduğu folderda "opencv" folderı da olmalı. Bu folder içerisinde de OpenCV ile ilgili headerlar bulunmalı
mutahhar Konuyu açan
#5
o klasör zaten mingw deki include klasöründe var. sorun sanırım linker'ın kütüphaneleri görmediği için oluyor.
#6
#include "file.h" ve
#include <file.h>

farklı. Sende " ". Folder olmalı.
#7
OpenCV ile proje geliştirmeye gelene kadar bunu görmüş olman gerekirdi, yada <> ve "" ayrımını yapabiliyor olman gerekirdi, neyse eğitim sistemini yada koşullarını tartışmicam;

konuya Google'dan ulaşabilecek arkadaşlar için bi kaç anahtar kelime ile konuya giricem...

C++ include kullanımı, include ön işlemci direktifi kullanımı vs. vs.

#include ön işlemci direktifi iki tip veri kabul ediyor, birisi proje geliştirme aracının standart veya kullanıcı tanımlı ( harici ) dizin tanımlamalarında istenilen başlık dosyasına ulaşması için ( <> ),

( "" )diğerinde ise IDE'nin harici yada dahili dizinlerinin dışında projenin dizininde başlık dosyasını araması gerektiğini söylüyor derleyiciye ....

Üstadım tamamlancak bişeyler varsa ne olur bilginizi esirgemeyin, kizanlik
Saygılarımla...

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.

Reklam