यहाँ करना होगा, Zaw लिन के उत्तर के आधार पर, एक समारोह मैंने लिखा है पिक्सेल की किसी भी राशि से किसी भी दिशा में फ्रेम/छवि पारी ऐसा करने के लिए पंक्तियों या स्तंभों:
enum Direction{
ShiftUp=1, ShiftRight, ShiftDown, ShiftLeft
};
cv::Mat shiftFrame(cv::Mat frame, int pixels, Direction direction)
{
//create a same sized temporary Mat with all the pixels flagged as invalid (-1)
cv::Mat temp = cv::Mat::zeros(frame.size(), frame.type());
switch (direction)
{
case(ShiftUp) :
frame(cv::Rect(0, pixels, frame.cols, frame.rows - pixels)).copyTo(temp(cv::Rect(0, 0, temp.cols, temp.rows - pixels)));
break;
case(ShiftRight) :
frame(cv::Rect(0, 0, frame.cols - pixels, frame.rows)).copyTo(temp(cv::Rect(pixels, 0, frame.cols - pixels, frame.rows)));
break;
case(ShiftDown) :
frame(cv::Rect(0, 0, frame.cols, frame.rows - pixels)).copyTo(temp(cv::Rect(0, pixels, frame.cols, frame.rows - pixels)));
break;
case(ShiftLeft) :
frame(cv::Rect(pixels, 0, frame.cols - pixels, frame.rows)).copyTo(temp(cv::Rect(0, 0, frame.cols - pixels, frame.rows)));
break;
default:
std::cout << "Shift direction is not set properly" << std::endl;
}
return temp;
}
स्रोत
2014-02-16 16:16:32
यह थोड़ा सा बुरा चाल है। यह काम करता है, लेकिन "शून्य छवि" और प्रतिलिपि बनाने की अनावश्यक रचना है। मैं [एफ़िन ट्रांसफॉर्मेशन] का उपयोग करके अपने समाधान को विश्वास करता हूं (http://stackoverflow.com/a/26766505/2740907) अधिक स्वच्छ और बेहतर प्रदर्शन है। –
@pajus_cz, "शून्य छवि" किसी भी मामले में बनाई जाएगी, भले ही आप इसे स्वयं नहीं बना रहे हों। साथ ही, कॉपीटो सरल मेमकोपी ऑपरेशन करता है जो रैपएफ़िन द्वारा किए गए सभी जटिल संचालनों की तुलना में बहुत तेज है। – user2983637
धन्यवाद! मेरे लिए लपेटने से दूसरे परिणाम तेजी से मेरे लिए। – dhiga