आप genIcam API का उपयोग कर ऐसा कर सकते हैं। जेनआईकैम कैमरे के लिए एक सामान्य इंटरफ़ेस है (यूएसबी, गीग, कैमरालिंक, आदि)। इसमें कई मॉड्यूल होते हैं लेकिन जेएनटीएल (परिवहन परत) के साथ आप सबसे ज्यादा चिंतित हैं। आप जेएनटीएल दस्तावेज HERE पर और अधिक पढ़ सकते हैं। प्रक्रिया को आसान बनाने के लिए, मैं बेसलर एपीआई या बाउमर एपीआई का उपयोग करने की सलाह देता हूं, जो जेनटीएल उपभोक्ता हैं (निर्माता और उपभोक्ता जेएनटीएल दस्तावेज में वर्णित हैं)। मैंने बाउमर एपीआई का इस्तेमाल किया, लेकिन दोनों काम करेंगे।
नोट: मैं बाउमर एचएक्सजी 20 मोनो कैमरा का उपयोग कर रहा हूं।
डाउनलोड और
- दृश्य स्टूडियो समुदाय Eddition (मैं इस्तेमाल किया 2015 LINK)
- Baumer GAPI एसडीके इन्सटाल चीजों, LINK
- openCV (यहाँ एक यूट्यूब ट्यूटोरियल के लिए openCV 3 का निर्माण करना है सी ++) HERE
परीक्षण कैमर कैमरे एक्सप्लोरर
यह जांचना एक अच्छा विचार है कि आपका नेटवर्क इंटरफ़ेस कार्ड (एनआईसी) और गीग कैमरा कैमरा एक्सप्लोरर प्रोग्राम का उपयोग करके कैमरे के साथ काम कर रहा है और खेल रहा है। आपको अपने एनआईसी पर जंबो पैकेट सक्षम करने की आवश्यकता हो सकती है। आप IPconfig प्रोग्राम का उपयोग कर कैमरा आईपी को भी कॉन्फ़िगर कर सकते हैं। मैं डीएचसीपी सेटिंग का उपयोग करता हूं लेकिन आप अपने कैमरे और एनआईसी के लिए एक स्थिर आईपी भी इस्तेमाल कर सकते हैं।
सेटअप दृश्य स्टूडियो
आपके सिस्टम वातावरण चर की स्थापना और दृश्य स्टूडियो विन्यस्त करने के लिए चरणों का
Baumer GAPI एसडीके प्रोग्रामर गाइड में वर्णित किया गया है (4 अध्याय) है, जो निम्न निर्देशिका में स्थित है
C:\Program Files\Baumer\Baumer GAPI SDK\Docs\Programmers_Guide
चेक आप निम्नलिखित प्रणाली चर राशि (यदि 64 बिट संस्करण का प्रयोग करके) या वैरिएबल अगर जरूरत (फिर से बनाने कि प्रोग्रामर की गाइड में सेक्शन 4.3.1 से फेर)।
- नाम =
GENICAM_GENTL64_PATH
- मूल्य =
C:\Program Files\Baumer\Baumer GAPI SDK\Components\Bin\x64\
दृश्य स्टूडियो में, एक नया सी ++ प्रोजेक्ट बना देंगे और अद्यतन निम्नलिखित गुण (प्रोग्रामर की मार्गदर्शिका में खंड 4.4.1 को देखें)।
- C/C++> सामान्य> अतिरिक्त शामिल निर्देशिकाएँ =
C:\Program Files\Baumer\Baumer GAPI SDK\Components\Dev\C++\Inc
- लिंकर> सामान्य> अतिरिक्त लाइब्रेरी निर्देशिकाएँ =
C:\Program Files\Baumer\Baumer GAPI SDK\Components\Dev\C++\Lib\x64
- लिंकर> इनपुट> अतिरिक्त निर्भरता =
bgapi2_genicam.lib
- बिल्ड घटनाक्रम> घटना के बाद बिल्ड > कमांड लाइन =
copy "C:\Program Files\Baumer\Baumer GAPI SDK\Components\Bin\x64"\*.* .\
बनाएँ OpenCV खिड़की
में छवि स्ट्रीम प्रदर्शित करने के लिए सबसे आसान तरीका है आरंभ करने के लिए एक .cpp फ़ाइल Baumer GAPI एसडीके में प्रदान की जाती उदाहरण कोड में से एक का उपयोग करें और openCV कार्यक्षमता जोड़ने के लिए इसे संशोधित करने के लिए है।उपयोग करने के लिए उदाहरण कोड 005_PixelTransformation है, जो यहाँ
C:\Program Files\Baumer\Baumer GAPI SDK\Components\Examples\C++\src\0_Common\005_PixelTransformation
कॉपी स्थित है और अपनी परियोजना के स्रोत निर्देशिका में इस .cpp फ़ाइल पेस्ट और सुनिश्चित करें कि आप का निर्माण और संकलन कर सकते हैं कर रहा है। इसे 8 छवियों को कैप्चर करना चाहिए और प्रत्येक छवि के लिए पहली 6 पंक्तियों से पहले 6 पिक्सेल मानों को प्रिंट करना चाहिए।
सीपीपी स्रोत फ़ाइल के लिए इन #include
बयान जोड़ें:
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\video\video.hpp>
main()
समारोह
// OPENCV VARIABLE DECLARATIONS
cv::VideoWriter cvVideoCreator; // Create OpenCV video creator
cv::Mat openCvImage; // create an OpenCV image
cv::String videoFileName = "openCvVideo.avi"; // Define video filename
cv::Size frameSize = cv::Size(2048, 1088); // Define video frame size (frame width x height)
cvVideoCreator.open(videoFileName, CV_FOURCC('D', 'I', 'V', 'X'), 20, frameSize, true); // set the codec type and frame rate
मूल 005_PixelTransformation.cpp फ़ाइल में लाइन 569 की शुरुआत में इन चर घोषणाओं जोड़े for
लूप है जो 8 छवियों से अधिक लूप करता है, जो for(int i = 0; i < 8; i++)
कहता है। हम इसे लगातार चलाने के लिए बदलना चाहते हैं। मैं एक while
पाश है कि कहते हैं
while (pDataStream->GetIsGrabbing())
हमारे नए while
पाश के भीतर, वहाँ एक if
बयान है कि अगर पिक्सेल प्रारूप 'मोनो' (ग्रेस्केल) या रंग है की जाँच करता है है करने के लिए इसे बदलने के द्वारा ऐसा किया। मूल फ़ाइल में, यह लाइन 619 से शुरू होता है और 692 पर समाप्त होता है। सीधे if
और else
स्टेटमेंट ब्रेसिज़ बंद होने के बाद, और pImage->Release();
कथन से पहले, हमें छवियों को विंडो में प्रदर्शित करने के लिए ओपनसीवी भाग जोड़ना होगा। नोट करने के लिए कोड की निम्न पंक्तियां जोड़ें
} // This is the closing brace for the 'else color' statement
// OPEN CV STUFF
openCvImage = cv::Mat(pTransformImage->GetHeight(), pTransformImage->GetWidth(), CV_8U, (int *)pTransformImage->GetBuffer());
// create OpenCV window ----
cv::namedWindow("OpenCV window: Cam", CV_WINDOW_NORMAL);
//display the current image in the window ----
cv::imshow("OpenCV window : Cam", openCvImage);
cv::waitKey(1);
एक बात openCvImage
वस्तु में पिक्सेल प्रारूप है। मेरा कैमरा एक मोनो 8 बिट है, इसलिए मुझे CV_8U
निर्दिष्ट करना होगा। यदि आपका कैमरा आरजीबी या 10-बिट पिक्सेल है, तो आपको सही प्रारूप प्रदान करना होगा (ओपनसीवी दस्तावेज HERE देखें)।
आप कैमरा पैरामीटर समायोजित करने के लिए अन्य उदाहरणों का उल्लेख कर सकते हैं।
अब एक बार जब आप निर्माण और संकलन करते हैं, तो आपके पास एक ओपनसीवी विंडो खुली होनी चाहिए जो कैमरा छवियों को प्रदर्शित करे!
अधिक यूपी वोट लोगों के लिए थप्पड़ !!!! (यह बहुत काम कर मुझे हुक पाने के लिए बहुत समय ले लिया !!!)
की [नेटवर्क कैमरा के साथ OpenCV] (http://stackoverflow.com/questions/712998/opencv-with-network-cameras) – karlphillip
यह भी GigE विजन के साथ की [OpenCV एक संभव डुप्लिकेट है, संभव डुप्लिकेट कैमरा] (http://stackoverflow.com/questions/3345467/opencv-with-gige-vision-cameras)। – karlphillip
धन्यवाद, मैंने अपडेट पोस्ट करने के बाद आपकी टिप्पणियां देखीं। मैं लिंक देख लूंगा। – gpuguy