2013-06-26 3 views
9

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

छवि: https://docs.google.com/file/d/0BzUNc6BOkYrNeVhYUk1oQjFSQTQ/edit?usp=sharing

कोड:

#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace cv; 

int main (int argc, char **argv) 
{ 
    Mat im_gray; 
    Mat img_bw; 
    Mat img_final; 

    Mat im_rgb = imread("cam.jpg"); 
    cvtColor(im_rgb,im_gray,CV_RGB2GRAY); 


    adaptiveThreshold(im_gray, img_bw, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY_INV, 105, 1); 


    dilate(img_bw, img_final, 0, Point(-1, -1), 2, 1, 1); 


    imwrite("cam_final.jpg", img_final); 

    return 0; 
} 
+0

तो, प्रलेखन से शुरू करें http://docs.opencv.org/modules/imgproc/doc/filtering.html#void%20dilate%28InputArray%20src,%20OutputArray%20dst,%20InputArray%20kernel,%20Point % 20anchor,% 20int% 20iterations,% 20int% 20borderType,% 20const% 20Scalar और% 20borderValue% 29 मुझे एक पल दें ... – Antonio

उत्तर

13

official docs के अनुसार, तीसरा तर्क कर्नेल (या संरचना तत्व) होना चाहिए। अभी आपके पास 0 से गुजर रहे हैं:

dilate(img_bw, img_final, 0, Point(-1, -1), 2, 1, 1); 

यह इस तरह से फिर से लिखने का प्रयास करें:

dilate(img_bw, img_final, Mat(), Point(-1, -1), 2, 1, 1); 

इस मामले में, एक डिफ़ॉल्ट 3x3 गिरी इस्तेमाल किया जाएगा।

+1

यह काम करता है, धन्यवाद! : डी लेकिन क्यों? यह "मट()" क्या करता है? – U23r

+4

@ एनी जो खाली 'सीवी :: मैट' बनाता है। दस्तावेज़ों के मुताबिक, "अगर' तत्व = मैट() ', 3 x 3 आयताकार संरचना तत्व का उपयोग किया जाता है।" – Aurelius

1

कर्नेल मूल रूप से एक मैट्रिक्स है। वांछित आउटपुट संशोधित (इस मामले में फैला हुआ) मैट्रिक्स (छवि) उत्पन्न करने के लिए इनपुट मैट्रिक्स (छवि) पर यह गुणा या ओवरलैप किया गया है।

कोशिश dilate(img_bw, img_final, Mat(), Point(-1, -1), 2, 1, 1); में Mat() के मापदंडों को बदलने आप मूल रूप से गिरी की पिक्सेल की संख्या (ऊंचाई और चौड़ाई) है, जो मूल तस्वीर पर फैलाव प्रभाव बदल जाएगा बदल रहे हैं।

तो dilate के पैरामीटर में आप पहले से बताए गए नंबर के बजाय Mat() का उपयोग करते हैं।

संबंधित मुद्दे