6

का उपयोग करने में सहायता करने के लिए निम्नलिखित कोड में मैं dilate फ़ंक्शन का उपयोग करना चाहता हूं लेकिन मुझे नहीं पता कि Mat कक्षा को InputArray और OutputArray में कैसे डालना है। क्या आप मेरी मदद कर सकते हैं?dilate function OpenCV

इस प्रोटोटाइप समारोह का उपयोग करना:

void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue()) 

यहाँ मेरी कोड है:

#include "opencv2/opencv.hpp" 

using namespace cv; 

int main(int, char**) 
{ 
    Mat edges; 

    VideoCapture cap(0); // open the default camera 
    if(!cap.isOpened()) // check if we succeeded 
     return -1; 


    for(;;) 
    { 

     Mat frame; 
     cap >> frame; // get a new frame from camera 
     cvtColor(frame, edges, CV_BGR2GRAY); 
     GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); 
     //dilate(edges,edges,NULL); 
     Canny(edges, edges, 0, 30, 3); 
     imshow("edges", frame); 
     if(waitKey(30) >= 0) break; 
    } 
    // the camera will be deinitialized automatically in VideoCapture destructor 
    return 0; 
} 

उत्तर

19

उदाहरण, चारों ओर स्टैक ओवरफ़्लो हैं like this:

int erosion_size = 6; 
cv::Mat element = cv::getStructuringElement(cv::MORPH_CROSS, 
         cv::Size(2 * erosion_size + 1, 2 * erosion_size + 1), 
         cv::Point(erosion_size, erosion_size)); 

cv::dilate(edges, edges, element); 

Or this:

+०१२३५१६४१०६१
cv::dilate(edges, edges, cv::Mat(), cv::Point(-1,-1)); 
+0

क्या आप समझा सकते हैं कि अंतिम क्या करता है? – Antonio

+0

फ़ंक्शन का दस्तावेज़ इसे अच्छी तरह से समझाता है। – karlphillip

+5

-1, यह प्रलेखन में प्रभावी ढंग से है, लेकिन आप इसे लिंक नहीं कर रहे हैं और जैसे कि जवाब स्टैक ओवरफ़्लो मानक को पूरा नहीं करता है। से लिंक: http://stackoverflow.com/questions/how-to-answer -> http://msmvps.com/blogs/jon_skeet/archive/2009/02/17/answering-technical-questions-helpfully.aspx ' स्पष्टीकरण के बिना कोड शायद ही कभी उपयोगी है। कम से कम एक वाक्य या दो प्रदान करें कि क्या हो रहा है। – Antonio

2

in the following code I want to use the dilate function but I don't know how to cast a Mat class into a InputArray and OutputArray. Can you help me?

ठीक है, आप कास्टिंग के बिना Mat रूप Inputarray/Outputarray पैरामीटर का उपयोग कर सकते हैं। official docs देखें।

और here's आक्रामक ओपनसीवी ईरोड/डिलीट ट्यूटोरियल। या आप कार्लफिलिप के पोस्ट से नमूने का उपयोग कर सकते हैं।

+0

मैट :: copyTo के लिए टी केस प्रतीत नहीं होता है, क्योंकि संकलक शिकायत करता है: 'त्रुटि: कॉल के लिए कोई मिलान करने वाला फ़ंक्शन' cv :: Mat :: copyTo (cv :: mat) ' नोट: उम्मीदवार हैं: /usr/include/opencv2/core/core.hpp:1651:10: नोट: शून्य सीवी :: मैट :: copyTo (सीवी :: आउटपुटएरे) const' – pbond