2015-12-06 10 views
5

का उपयोग कर रहा कोण, स्रोत और गंतव्य छवि देकरकैसे सफेद पृष्ठभूमि बनाए रखने के लिए जब opencv warpaffine

void rotate(cv::Mat& src, double angle, cv::Mat& dst) 
{ 
    int len = std::max(src.cols, src.rows); 
    cv::Point2f pt(len/2., len/2.); 
    cv::Mat r = cv::getRotationMatrix2D(pt, angle, 1.0); 
    cv::warpAffine(src, dst, r, cv::Size(src.cols, src.rows)); 
} 

का उपयोग कर छवि को घुमाने के लिए कोशिश कर रहा हूँ। घूर्णन निम्नानुसार सही ढंग से काम करता है।

enter image description here

मैं काला क्षेत्रों सफेद बनाना चाहते हैं। मैंने

cv::Mat dst = cv::Mat::ones(src.cols, src.rows, src.type()); 

घुमाए जाने से पहले, लेकिन परिणाम में कोई बदलाव नहीं किया है। इसे कैसे प्राप्त किया जा सकता है?

नोट: मैं समाधान की तलाश में हूं जो घूर्णन करते समय इसे प्राप्त करता है। स्पष्ट रूप से घूर्णन के बाद काले क्षेत्रों को सफेद बनाकर इसे हासिल किया जा सकता है।

उत्तर

12

आप 10 और borderValuewarpAffine फ़ंक्शन के साथ इस तर्क के लिए उपयोग करना चाहेंगे। मोड को BORDER_CONSTANT पर सेट करके यह सीमा पिक्सेल (यानी छवि के बाहर) के लिए निरंतर मान का उपयोग करेगा, और आप मान को उस निरंतर मान पर सेट कर सकते हैं जिसका आप उपयोग करना चाहते हैं (यानी सफेद)। यह कुछ ऐसा दिखाई देगा:

cv::warpAffine(src, dst, r, 
       cv::Size(src.cols, src.rows), 
       cv::INTER_LINEAR, 
       cv::BORDER_CONSTANT, 
       cv::Scalar(255, 255, 255)); 

अधिक जानकारी के लिए OpenCV API Documentation देखें।

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