उपर्युक्त उत्तर निकट है लेकिन कुछ महत्वपूर्ण तत्वों को याद कर रहा है जो मुझे समझने के लिए थोड़ा सा लगा। मैं नक्शे इतना है कि वे सही ढंग से ज़ूम गणना और हटना कर रहे हैं बदल दिया है और कहा कि/उन्हें प्रत्येक स्थिति (अन्यथा आप सिर्फ एक छोटे से वर्ग को अपनी छवि remapping खत्म हो जाएगा पर x और y से घटाया। इसके अलावा, मैं बदल/धुंधला करने के लिए धुंधला अन्यथा आपके मानचित्रों में बहुत बड़ी संख्याएं होंगी और केवल सही नहीं आतीं (प्रत्येक स्थिति के बेहद बड़े गुणक)
float center_x = width/2; //or whatever
float center_y = height/2;
float blur = 0.002; //blur radius per pixels from center. 2px blur at 1000px from center
int iterations = 5;
Mat growMapx, growMapy;
Mat shrinkMapx, shrinkMapy;
for(int x = 0; x < width; x++) {
for(int y = 0; y < height; y++) {
growMapx[x,y] = x+((x - center_x)*blur);
growMapy[x,y] = y+((y - center_y)*blur);
shrinkMapx[x,y] = x-((x - center_x)*blur);
shrinkMapy[x,y] = y-((y - center_y)*blur);
}
}
Mat tmp1, tmp2;
for(int i = 0; i < iterations; i++) {
remap(src, tmp1, growMapx, growMapy, CV_INTER_LINEAR); // enlarge
remap(src, tmp2, shrinkMapx, shrinkMapy, CV_INTER_LINEAR); // shrink
addWeighted(tmp1, 0.5, tmp2, 0.5, 0, src); // blend back to src
}
स्रोत
2012-12-04 09:37:15
मैं वही प्रश्न पोस्ट करने वाला था। +1 –