如果有多個同款攝像頭,先檢視攝像頭資訊,getdevicename得到攝像頭name,id,然後為每個攝像頭建立乙個捕獲物件capturer = factory.create(cricket::device(sname, sid)); 但是這裡建立capturer時,用的是name區別每個攝像頭,因此會導致name相同的攝像頭無法區分開來
std::unique_ptrinfo(webrtc::videocapturefactory::createdeviceinfo());
int cameranum = info->numberofdevices();
for (int i = 0; i < cameranum; ++i) ;
char sid[ksize] = ;
if (info->getdevicename(0, sname, ksize, sid, ksize) != -1)
}
檢視webrtc原始碼,建立capturer,media/engine/webrtcvideocapture***ctory.cc中的create函式
std::unique_ptrwebrtcvideodevicecapture***ctory::create(
const device& device)
return std::move(capturer);
#else
return std::unique_ptr();
#endif
}
從上面可以看出建立了乙個webrtcvideocapturer例項以後再將它初始化,初始化方法在media/engine/webrtcvideocapturer.cc中
bool webrtcvideocapturer::init(const device& device)
webrtc::videocapturemodule::deviceinfo* info = factory_->createdeviceinfo();
if (!info)
//這裡提到了原始碼用的是name來匹配攝像頭
// find the desired camera, by name.
// in the future, comparing ids will be more robust.
// todo(juberti): figure what's needed to allow this.
int num_cams = info->numberofdevices();
char vcm_id[256] = "";
bool found = false;
for (int index = 0; index < num_cams; ++index)
}} ...
}
如上面修改了init方法後重新編譯原始碼,使修改生效
$ ninja -c ../debug
修改完以後,就可以使用name和id一起來當作攝像頭的標識了,也就解決了區分多個同類攝像頭問題。 labelme對同一型別的多個目標的識別問題
在使用labelme標記完影象後,我們可以使用labelme自帶的一套轉換工具 labelme json to dataset.exe 將每個對應的json檔案轉化為乙個字尾為 json的資料夾。資料夾內容如下 其中最重要的是名為label.png的16位,包含了具體哪乙個畫素作為mask的重要資訊...
Python同一類中的方法呼叫問題
classa defa add b self a 10 b 20 self.s a b self.s1 a b return self.s,self.s1 defc add ab self c 30 s c self.s s2 c self.s1 print s print s2 t a t.a a...
Spring如何獲取同一類的被注入到工廠中的例項
1.同一類的bean實現同乙個介面 如果有共性的方法,可以抽取出來,寫到實現類中,實現類實現介面,同一類的bean繼承該實現類,根據實際業務情況來 2.根據需要編寫介面的實現類 3.編寫context 4.注入介面就可以得到所有的實現類啦 5.備註 如果想得到具體哪乙個實現類,就需要有乙個標識,那麼...