c++ parametre alanında sadece tip olması.

Başlatan superconductor, 04 Ekim 2016, 13:04:23

superconductor

Merhaba. OpenCv de bu yöntemi gördüm ve mekanizmasını anlamadım.

createTrackbar( "Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Erosion Demo",
                  &erosion_elem, max_elem,
                  Erosion );


Bu trackbar Erosion adlı fonksiyona çağrı yapıyor.

void Erosion( int, void* )
{
  int erosion_type;
  
  if( erosion_elem == 0 ){ erosion_type = MORPH_RECT; }
  else if( erosion_elem == 1 ){ erosion_type = MORPH_CROSS; }
  else if( erosion_elem == 2) { erosion_type = MORPH_ELLIPSE; }

  Mat element = getStructuringElement( erosion_type,
                                       Size( 2*erosion_size + 1, 2*erosion_size+1 ),
                                       Point( erosion_size, erosion_size ) );
}




Fonksiyon tanımında sadece tipler var. İçerideki erosion_elem değişkenine nasıl ulaşıldığını anlamadım.
düzeltme: Değişkene global erişiliyormuş. Parametre alanındaki tipleri neden kullandık açıklayabilir misiniz?

bluekid

sebebi  createTrackbar adlı fonksiyona track barın pozisyonu değiştikçe  çağrılacak fonksiyonun
prototipi

void func( int, void* )


böyle olması gerektiğinden
bakınız

http://docs.opencv.org/3.1.0/d7/dfc/group__highgui.html#ga004b512c3d09aa53f20b050b1d01fab1