c++ ओपनसीवी में कस्टम कैमरा का इस्तेमाल करना(जीस्ट्रीमर के माध्यम से)




opencv camera (2)

ऐसा लगता है कि हम नीचे की तरह एक उचित जीस्ट्रीमर पाइप लाइन का उपयोग करके कैमरे को कॉल कर सकते हैं:

VideoCapture cap("mfw_v4lsrc ! ffmpegcolorspace ! video/x-raw-rgb ! appsink")

जैसे कैमरा आउटपुट YUV में है, हमें इसे आरजीबी में बदलने की जरूरत है ताकि फ़्रेम को ओपनसीवी में पास किया जा सके। यह वह जगह है जहां ओपनसीवी सुनिश्चित करता है कि यह आरजीबी रंग स्थान हो।

मैं ov5640 कैमरा (एमआईपीआई) के साथ नाइट्रोजन 6x बोर्ड का उपयोग कर रहा हूँ

कैमरा मानक v4l / v4l का उपयोग नहीं कर रहा है, लेकिन हम इसके चालक (mfw_v4l) के लिए जीस्ट्रीमर का उपयोग करते हुए वीडियो स्ट्रीम कर सकते हैं:

gst-launch mfw_v4lsrc ! autovideosink

मैं OpenCV में GStreamer (OpenCV के अंदर GStreamer) के माध्यम से इसे कॉल करके कैमरे का उपयोग करना चाहता हूं। मैंने ओपनसीवी के अंदर जीएसटी्रीमर को फोन करने के बारे में एक प्रश्न पूछा, और यह अनुवर्ती है।

अगर मैं जीएसटीरियर समर्थन सक्षम करता हूं, तो इसे स्रोत कोड में चेक किया गया है , लेकिन ओपनसीवी जीएसटीआईर के लिए मानक वी 4 एल / वी 4 एल 2 का इस्तेमाल करने की कोशिश करता है जिसे मैं बदलना चाहता हूं। जीस्ट्रीमर को कॉल करने के बारे में अनुभाग cap_gstreamer.cpp में है :

    CvCapture* cvCreateCapture_GStreamer(int type, const char* filename )
{
    CvCapture_GStreamer* capture = new CvCapture_GStreamer;

    if( capture->open( type, filename ))
        return capture;

    delete capture;
    return 0;
}

मुझे लगता है कि यह एक ऐसा खंड है जिस पर मुझे कैमरे के चालक को बताए जाने पर काम करना चाहिए। ("प्रकार" यहां शायद ड्राइवर से संबंधित संख्या है (जैसा कि precomp.hpp में परिभाषित किया गया है), लेकिन "फ़ाइल नाम" क्या है?)

कैमरे को जीस्ट्रीमर के माध्यम से कैसे उपयोग किया जाए, इसके बारे में कोई भी सुझाव सहायक और सराहना होगा। धन्यवाद!


बस संदर्भ के लिए, यह OpenCV 3.0 में काम करता है:

VideoCapture cap("souphttpsrc location=http://root:[email protected]:80/mjpg/video.mjpg ! decodebin ! videoconvert ! appsink")