2012-09-07 21 views
5

के साथ ग्रिड लाइनों के निश्चित सेट को ड्रॉइंग करना ओपनसीवी नमूना फ़ाइल में रंग पहचान नमूने के आउटपुट के विरुद्ध, सभी चौराहे पर परिभाषित बिंदुओं के साथ उपयोगकर्ता परिभाषित ग्रिड लाइनों को आकर्षित करना संभव है? असल में, वेबकैम को आपके ऊपर से मानव सिर और कंधों का पता लगाने की आवश्यकता होगी। फिर जब किसी व्यक्ति का पता चला है, तो मुझे वहां मौजूद ग्रिड लाइनों की आवश्यकता है ताकि मैं एक्स और वाई अक्ष (माथे और दोनों) में, बाहरी बाहरी ग्रिड (दाएं कंधे) तक, बाहरी बाहरी ग्रिड (बाएं कंधे) से जान सकूं सिर के पीछे)। उसके बाद, इन बिंदुओं को एक्ट्यूएटर और वाल्व जैसे यांत्रिक भागों के संचालन के लिए भेजा जाना है।ओपनसीवी

मैं वास्तव में coz मैं वास्तव में अब हताश हूँ, किसी भी मदद की सराहना करेंगे ..

Thx!

मैं सी ++ के साथ काम करने के बारे में शुरुआती ज्ञान के साथ एक एंट्री लेवल ओपनसीवी उपयोगकर्ता हूं। मैं वर्तमान में vS2008 पर opencvV2.1 का उपयोग कर रहा हूं।

उत्तर

3

यह कहना मुश्किल है कि आपकी समस्या वास्तव में क्या है।

यदि आप सिर्फ ग्रिडलाइन आकर्षित करना चाहते हैं, तो ऐसा कोई ओपनसीवी फ़ंक्शन नहीं है जो ऐसा करता है। ग्रिड में लाइनों को प्लॉट करने के लिए, आप लूप में cv::line का उपयोग कर सकते हैं, फिर घोंसला वाले लूप के साथ चौराहे खींचें।

// assume that mat.type=CV_8UC3 

dist=50; 

int width=mat.size().width; 
int height=mat.size().height; 

for(int i=0;i<height;i+=dist) 
    cv::line(mat,Point(0,i),Point(width,i),cv::Scalar(255,255,255)); 

for(int i=0;i<width;i+=dist) 
    cv::line(mat,Point(i,0),Point(i,height),cv::Scalar(255,255,255)); 

for(int i=0;i<width;i+=dist) 
    for(int j=0;j<height;j+=dist) 
    mat.at<cv::Vec3b>(i,j)=cv::Scalar(10,10,10); 
0

OpenCV लाइन समारोह का उपयोग कर छवि पर एक ग्रिड ड्राइंग के लिए

Mat mat_img(image); 
int stepSize = 65; 

int width = mat_img.size().width; 
int height = mat_img.size().height; 

for (int i = 0; i<height; i += stepSize) 
    cv::line(mat_img, Point(0, i), Point(width, i), cv::Scalar(0, 255, 255)); 

for (int i = 0; i<width; i += stepsSize) 
    cv::line(mat_img, Point(i, 0), Point(i, height), cv::Scalar(255, 0, 255));