2013-06-25 24 views
16

OpenCV'yi "OpenCV Kütüphanesiyle Öğrenme OpenCV Computer Vision" ile öğrenmeye başladım. Bir resim görüntülemek gösterilmiştir İlk örnekte IplImage * img'in açıklaması

, bu kitap bu açıklar rağmen, hala tam olarak tam olarak IplImage* img ne yaptığını bilmiyorum bir çizgi

IplImage* img = cvLoadImage("name.type") 

sahiptir.

cvLoadImage, görüntünün hangi IplImage işaret ettiğini imgeye yükler mi? Bunu bana açıklayan var mı lütfen? Yanı blahblahblah olabilir size

+4

OpenCV'yi öğrenmeye yeni başlıyorsanız, ** ** C++ API'sini kullanmanızı öneririz. C API'sı ('IplImage' dahil) kullanımdan kaldırılmıştır (kullanımı zorlaştırılmamalıdır). Bunun yerine OpenCV'nin [öğreticiler] (http://docs.opencv.org/doc/tutorials/tutorials.html) adresinden başlamak isteyebilirsiniz. – Aurelius

cevap

25
  • img değişkenin adıdır ederiz;

  • IplImage değişkenin türüdür, yalnızca görüntü verilerinin yanı sıra görüntüdeki bazı bilgiler (boyut, renk derinliği, vb.) Içeren bir struct; IplImage ilgili daha fazla bilgi için

    typedef struct _IplImage { 
    int     nSize; 
    int     ID; 
    int     nChannels; 
    int     alphaChannel; 
    int     depth; 
    char     colorModel[4]; 
    char     channelSeq[4]; 
    int     dataOrder; 
    int     origin; 
    int     align; 
    int     width; 
    int     height; 
    struct _IplROI*  roi; 
    struct _IplImage* maskROI; 
    void*    imageId; 
    struct _IplTileInfo* tileInfo; 
    int     imageSize; 
    char*    imageData; 
    int     widthStep; 
    int     BorderMode[4]; 
    int     BorderConst[4]; 
    char*    imageDataOrigin; 
    } IplImage; 
    

: Other question about IplImage

  • cvLoadImage bunu yüklediğinde bir IplImage oluşturur anlamına gelir ve bu yerleştirme masraflarını döndüren bir IplImage için bir işaretçi sağlar.

Bitmiş olduğunuzda, bellek sızıntısı istemiyorsanız, cvReleaseImage(&img)'u yapmayı unutmayın.

+0

Yani IplImage, "img" değişkenindeki bilgileri depolayan bir veri yapısıdır. Eğer sakıncası yoksa buradayken daha fazla soru sormak istiyorum ... IplImage için neden bir işaretçi gerekli? "Ayrılmış bir görüntü veri yapısına bir işaretçi daha sonra döndüğünde" ne anlama gelir? Teşekkürler – user2521723

+0

Bir resim verisi VE bunun için bir işaretçi 'IplImage * img = cvLoadImage (" name.type ")' ile oluşturuldu. Bunu beyan etmenizin nedeni, tüm cv ... yöntemlerinin resim işaretlerini kabul etmesi ve döndürmesidir. Öğrenmekte olduğunuz kitap, C üzerinde yazılı olan eski openCV API'sine dayanmaktadır. Şimdi openCV 2.4.5 son kararlı sürümü, işaretçiye gerek olmayan C++ API'sini kullanır. Kitapla birlikte opencv 2.4.5 belgelerine bir göz atın ve orada harika eğiticilerle kolayca öğrenin. C++ API'sında Mat görüntüsü = imload (""); 'bildirimi işaretçi olmadan ve yöntemleri işaretçisi değil veri gerektirir. – baci