yanıt yukarıda yakın ama anlamaya bana biraz aldı, birkaç temel unsurları eksik olduğunu. Haritaları değiştirerek yakınlaştırma ve küçülmeyi doğru bir şekilde hesapladım ve her bir konumdaki x ve y'den ekleyip çıkartacağım (aksi takdirde görüntünüzü küçük bir kareye yeniden eşleştireceksiniz. * Haritalarınızın çok sayıda içeren ve sadece doğru (her pozisyonun çok büyük katlarını) dışarı çıkmıyor aksi bulanıklaşmaya bulanıklık.
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
}
Ben aynı soruyu yayınlamak üzereydi. +1 –