Opencv - Histagram Oriented Detection Android
-
merhabalar sayın müritler
Aldığım bir ders gereği android platformunda people detection gibi bir olayı gerçekleştirmem gerekli kameradan alınan frameler anlık olarak işlenecek ve bluetooth ile başka bir platforma(elektronik karta) gönderilecek ancak ne görüntü işeme dersini aldım ne java programlama biliyorum(C# öğrendim) nede android le alakam var
herneyse yaptığım araştırmalar sonucu işin theoretical arkaplanında histogram oriented gradients methodunu kullanabileceğimi düşündüm sonrada open cv android lib içerisindeki Histogram oriented gradients(HogDescriptor) özelliğini yine open cv nin face detection örneğine implement ettim
peki çalıştımı ? sanırım çalıştı face detection örneği başka bir openCV özelliği kullanarak(Cascade classifier) bulduğu yüzlerin üzerine kare ler çizdiriyor bende aynen HogDescriptor kullanarak çizdiriyorum ancak 2-3 saniyede bir frame anca işliyor benim telefon (huawei u8850) epey yavaş
hog descriptor
struct CV_EXPORTS HOGDescriptor { enum { DEFAULT_WIN_SIGMA = -1 }; enum { DEFAULT_NLEVELS = 64 }; enum { DESCR_FORMAT_ROW_BY_ROW, DESCR_FORMAT_COL_BY_COL }; HOGDescriptor(Size win_size=Size(64, 128), Size block_size=Size(16, 16), Size block_stride=Size(8, 8), Size cell_size=Size(8, 8), int nbins=9, double win_sigma=DEFAULT_WIN_SIGMA, double threshold_L2hys=0.2, bool gamma_correction=true, int nlevels=DEFAULT_NLEVELS); size_t getDescriptorSize() const; size_t getBlockHistogramSize() const; void setSVMDetector(const vector<float>& detector); static vector<float> getDefaultPeopleDetector(); static vector<float> getPeopleDetector48x96(); static vector<float> getPeopleDetector64x128(); void detect(const GpuMat& img, vector<Point>& found_locations, double hit_threshold=0, Size win_stride=Size(), Size padding=Size()); void detectMultiScale(const GpuMat& img, vector<Rect>& found_locations, double hit_threshold=0, Size win_stride=Size(), Size padding=Size(), double scale0=1.05, int group_threshold=2); void getDescriptors(const GpuMat& img, Size win_stride, GpuMat& descriptors, int descr_format=DESCR_FORMAT_COL_BY_COL); Size win_size; Size block_size; Size block_stride; Size cell_size; int nbins; double win_sigma; double threshold_L2hys; bool gamma_correction; int nlevels; private: // Hidden }
kodu bu şekilde çalıştırdım
HOGDescriptor hog = new HOGDescriptor();
MatOfFloat descriptors = HOGDescriptor.getDefaultPeopleDetector();
MatOfPoint found = new MatOfPoint();
hog.setSVMDetector(descriptors);hog.detectMultiScale(mGray, faces, weights);
daha önce bu şeyi kullanmış bir arkadaş varsa akıl danışmak isterim ne yapmak gerek
birde şu BaseLoaderCallback içerisindeki kısımı tam çözemedim ne işe yaramakta(face detection örneğinde)
isterseniz tüm uygulamayıda gönderebilirim
-
Hocam tabi sen bilirsin ben cok bilmem face detection isini ama hybird(phonegap) gibi bir yapiyla kameradan aldigin goruntuyu ajaxla kontrol ettirmek daha kolay olmaz mi?