Skip to content

Commit d0ec626

Browse files
committed
Fix warnings on Win and Android
1 parent 044bb5e commit d0ec626

File tree

1 file changed

+46
-47
lines changed

1 file changed

+46
-47
lines changed

modules/photometric_calib/src/VignetteCalib.cpp

Lines changed: 46 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
#include <fstream>
99
#include <iostream>
10-
#include <algorithm>
1110

1211
namespace cv { namespace photometric_calib{
1312

@@ -73,10 +72,10 @@ void VignetteCalib::displayImage(float *I, int w, int h, std::string name)
7372
{
7473
//isnanf? isnan?
7574
if(cvIsNaN(I[i]) == 1) img.at<Vec3b>(i) = Vec3b(0,0,255);
76-
else img.at<Vec3b>(i) = Vec3b(255*(I[i]-vmin) / (vmax-vmin),255*(I[i]-vmin) / (vmax-vmin),255*(I[i]-vmin) / (vmax-vmin));
75+
else img.at<Vec3b>(i) = Vec3b((uchar)(255*(I[i]-vmin) / (vmax-vmin)),(uchar)(255*(I[i]-vmin) / (vmax-vmin)),(uchar)(255*(I[i]-vmin) / (vmax-vmin)));
7776
}
7877

79-
printf("plane image values %f - %f!\n", vmin, vmax);
78+
std::cout<<"plane image values " << vmin << " - " << vmax << "!" <<std::endl;
8079
imshow(name, img);
8180
imwrite("vignetteCalibResult/plane.png", img);
8281
}
@@ -91,7 +90,7 @@ void VignetteCalib::displayImageV(float *I, int w, int h, std::string name)
9190
else
9291
{
9392
float c = 254*I[i];
94-
img.at<Vec3b>(i) = Vec3b(c,c,c);
93+
img.at<Vec3b>(i) = Vec3b((uchar)c,(uchar)c,(uchar)c);
9594
}
9695

9796
}
@@ -100,16 +99,16 @@ void VignetteCalib::displayImageV(float *I, int w, int h, std::string name)
10099

101100
void VignetteCalib::calib()
102101
{
103-
if(-1 == system("rm -rf vignetteCalibResult")) printf("could not delete old vignetteCalibResult folder!\n");
104-
if(-1 == system("mkdir vignetteCalibResult")) printf("could not delete old vignetteCalibResult folder!\n");
102+
if(-1 == system("rm -rf vignetteCalibResult")) std::cout<< "could not delete old vignetteCalibResult folder!" << std::endl;
103+
if(-1 == system("mkdir vignetteCalibResult")) std::cout<< "could not delete old vignetteCalibResult folder" << std::endl;
105104

106105
// affine map from plane cordinates to grid coordinates.
107106
Matx33f K_p2idx = Matx33f::eye();
108107
Mat1f test = Mat1f::eye(3,3);
109108
K_p2idx(0,0) = _gridWidth / _facW;
110109
K_p2idx(1,1) = _gridHeight / _facH;
111-
K_p2idx(0,2) = _gridWidth / 2;
112-
K_p2idx(1,2) = _gridHeight / 2;
110+
K_p2idx(0,2) = _gridWidth / 2.f;
111+
K_p2idx(1,2) = _gridHeight / 2.f;
113112
Matx33f K_p2idx_inverse = K_p2idx.inv();
114113

115114
int wO, hO;
@@ -125,13 +124,13 @@ void VignetteCalib::calib()
125124
std::vector<float*> p2imgY;
126125

127126
float meanExposure = 0.f;
128-
for(size_t i=0;i<imageReader->getNumImages();i+=_imageSkip)
127+
for(unsigned long i=0;i<imageReader->getNumImages();i+=_imageSkip)
129128
meanExposure+=imageReader->getExposureDuration(i);
130129
meanExposure = meanExposure/imageReader->getNumImages();
131130

132131
if(meanExposure==0) meanExposure = 1;
133132

134-
for(size_t i=0; i < imageReader->getNumImages(); ++i)
133+
for(unsigned long i=0; i < imageReader->getNumImages(); ++i)
135134
{
136135
std::vector<int> markerIds;
137136
std::vector< std::vector<Point2f> > markerCorners, rejectedCandidates;
@@ -181,7 +180,7 @@ void VignetteCalib::calib()
181180
for(int x=0;x<_gridWidth;x++)
182181
{
183182
//Eigen::Vector3f pp = HK*Eigen::Vector3f(x,y,1);
184-
Vec3f pp = HK * Vec3f(x,y,1);
183+
Vec3f pp = HK * Vec3f((float)x,(float)y,1);
185184
plane2imgX[idx] = pp[0] / pp[2];
186185
plane2imgY[idx] = pp[1] / pp[2];
187186
idx++;
@@ -211,19 +210,19 @@ void VignetteCalib::calib()
211210
// debug-plot.
212211
Mat dbgImg(hI, wI, CV_8UC3);
213212
for(int j=0;j<wI*hI;j++)
214-
dbgImg.at<Vec3b>(j) = Vec3b(imgRaw[j], imgRaw[j], imgRaw[j]);
213+
dbgImg.at<Vec3b>(j) = Vec3b((uchar)imgRaw[j], (uchar)imgRaw[j], (uchar)imgRaw[j]);
215214

216215
for(int x=0; x<=_gridWidth;x+=200)
217216
for(int y=0; y<=_gridHeight;y+=10)
218217
{
219218
int idxS = (x<_gridWidth ? x : _gridWidth-1)+(y<_gridHeight ? y : _gridHeight-1)*_gridWidth;
220219
int idxT = (x<_gridWidth ? x : _gridWidth-1)+((y+10)<_gridHeight ? (y+10) : _gridHeight-1)*_gridWidth;
221220

222-
int u_dS = plane2imgX[idxS]+0.5;
223-
int v_dS = plane2imgY[idxS]+0.5;
221+
int u_dS = (int)lround((plane2imgX[idxS]+0.5));
222+
int v_dS = (int)lround((plane2imgY[idxS]+0.5));
224223

225-
int u_dT = plane2imgX[idxT]+0.5;
226-
int v_dT = plane2imgY[idxT]+0.5;
224+
int u_dT = (int)lround((plane2imgX[idxT]+0.5));
225+
int v_dT = (int)lround((plane2imgY[idxT]+0.5));
227226

228227
if(u_dS>=0 && v_dS >=0 && u_dS<wI && v_dS<hI && u_dT>=0 && v_dT >=0 && u_dT<wI && v_dT<hI)
229228
line(dbgImg, Point(u_dS, v_dS), Point(u_dT, v_dT), Scalar(0,0,255), 10, LINE_AA);
@@ -236,11 +235,11 @@ void VignetteCalib::calib()
236235
int idxS = (x<_gridWidth ? x : _gridWidth-1)+(y<_gridHeight ? y : _gridHeight-1)*_gridWidth;
237236
int idxT = ((x+10)<_gridWidth ? (x+10) : _gridWidth-1)+(y<_gridHeight ? y : _gridHeight-1)*_gridWidth;
238237

239-
int u_dS = plane2imgX[idxS]+0.5;
240-
int v_dS = plane2imgY[idxS]+0.5;
238+
int u_dS = (int)lround(plane2imgX[idxS]+0.5);
239+
int v_dS = (int)lround(plane2imgY[idxS]+0.5);
241240

242-
int u_dT = plane2imgX[idxT]+0.5;
243-
int v_dT = plane2imgY[idxT]+0.5;
241+
int u_dT = (int)lround(plane2imgX[idxT]+0.5);
242+
int v_dT = (int)lround(plane2imgY[idxT]+0.5);
244243

245244
if(u_dS>=0 && v_dS >=0 && u_dS<wI && v_dS<hI && u_dT>=0 && v_dT >=0 && u_dT<wI && v_dT<hI)
246245
line(dbgImg, Point(u_dS, v_dS), Point(u_dT, v_dT), Scalar(0,0,255), 10, LINE_AA);
@@ -249,8 +248,8 @@ void VignetteCalib::calib()
249248
for(int x=0; x<_gridWidth;x++)
250249
for(int y=0; y<_gridHeight;y++)
251250
{
252-
int u_d = plane2imgX[x+y*_gridWidth]+0.5;
253-
int v_d = plane2imgY[x+y*_gridWidth]+0.5;
251+
int u_d = (int)lround(plane2imgX[x+y*_gridWidth]+0.5);
252+
int v_d = (int)lround(plane2imgY[x+y*_gridWidth]+0.5);
254253

255254
if(!(u_d>1 && v_d >1 && u_d<wI-2 && v_d<hI-2))
256255
{
@@ -264,7 +263,7 @@ void VignetteCalib::calib()
264263
if(rand()%40==0)
265264
{
266265
char buf[1000];
267-
snprintf(buf,1000,"vignetteCalibResult/img%lu.png",i);
266+
snprintf(buf,1000,"vignetteCalibResult/img%u.png",(unsigned)i);
268267
imwrite(buf, dbgImg);
269268
}
270269

@@ -279,7 +278,7 @@ void VignetteCalib::calib()
279278
logFile.open("vignetteCalibResult/log.txt", std::ios::trunc | std::ios::out);
280279
logFile.precision(15);
281280

282-
int n = imageReader->getNumImages();
281+
unsigned long n = imageReader->getNumImages();
283282

284283
float* planeColor = new float[_gridWidth*_gridHeight];
285284
float* planeColorFF = new float[_gridWidth*_gridHeight];
@@ -305,22 +304,22 @@ void VignetteCalib::calib()
305304
E=0;R=0;
306305

307306
// for each plane pixel, it's optimum is at sum(CF)/sum(FF)
308-
for(int img=0;img<n;img++) // for all images
307+
for(unsigned long img=0;img < n;img++) // for all images
309308
{
310309
float* plane2imgX = p2imgX[img];
311310
float* plane2imgY = p2imgY[img];
312311
float* image = images[img];
313312

314313
for(int pi=0;pi<_gridWidth*_gridHeight;pi++) // for all plane points
315314
{
316-
if(cvIsNaN(plane2imgX[pi])) continue;
315+
if(cvIsNaN(plane2imgX[pi]) == 1) continue;
317316

318317
// get vignetted color at that point, and add to build average.
319318
float color = getInterpolatedElement(image, plane2imgX[pi], plane2imgY[pi], wI);
320319
float fac = getInterpolatedElement(vignetteFactor, plane2imgX[pi], plane2imgY[pi], wI);
321320

322-
if(cvIsNaN(fac)) continue;
323-
if(cvIsNaN(color)) continue;
321+
if(cvIsNaN(fac) == 1) continue;
322+
if(cvIsNaN(color) == 1) continue;
324323

325324
double residual = (double)((color - planeColor[pi]*fac)*(color - planeColor[pi]*fac));
326325
if(abs(residual) > oth2)
@@ -334,7 +333,7 @@ void VignetteCalib::calib()
334333
planeColorFF[pi] += fac*fac;
335334
planeColorFC[pi] += color*fac;
336335

337-
if(cvIsNaN(planeColor[pi])) continue;
336+
if(cvIsNaN(planeColor[pi]) == 1) continue;
338337
E += residual;
339338
R ++;
340339
}
@@ -349,31 +348,31 @@ void VignetteCalib::calib()
349348
}
350349
displayImage(planeColor, _gridWidth, _gridWidth, "Plane");
351350

352-
printf("%f residual terms => %f\n", R, sqrtf(E/R));
351+
std::cout << R << " residual terms => " << sqrt(E/R) << std::endl;
353352

354353
// ================================ optimize vignette =======================================
355354
memset(vignetteFactorTT,0,hI*wI*sizeof(float));
356355
memset(vignetteFactorCT,0,hI*wI*sizeof(float));
357356
E=0;R=0;
358357

359-
for(int img=0;img<n;img++) // for all images
358+
for(unsigned long img=0;img<n;img++) // for all images
360359
{
361360
float* plane2imgX = p2imgX[img];
362361
float* plane2imgY = p2imgY[img];
363362
float* image = images[img];
364363

365364
for(int pi=0;pi<_gridWidth*_gridWidth;pi++) // for all plane points
366365
{
367-
if(cvIsNaN(plane2imgX[pi])) continue;
366+
if(cvIsNaN(plane2imgX[pi]) == 1) continue;
368367
float x = plane2imgX[pi];
369368
float y = plane2imgY[pi];
370369

371370
float colorImage = getInterpolatedElement(image, x, y, wI);
372371
float fac = getInterpolatedElement(vignetteFactor, x, y, wI);
373372
float colorPlane = planeColor[pi];
374373

375-
if(cvIsNaN(colorPlane)) continue;
376-
if(cvIsNaN(colorImage)) continue;
374+
if(cvIsNaN(colorPlane) == 1) continue;
375+
if(cvIsNaN(colorImage) == 1) continue;
377376

378377
double residual = (double)((colorImage - colorPlane*fac)*(colorImage - colorPlane*fac));
379378
if(abs(residual) > oth2)
@@ -400,7 +399,7 @@ void VignetteCalib::calib()
400399
vignetteFactorCT[ix+iy*wI + wI] += (dy-dxdy) * colorImage*colorPlane;
401400
vignetteFactorCT[ix+iy*wI + 1+wI] += dxdy * colorImage*colorPlane;
402401

403-
if(cvIsNaN(fac)) continue;
402+
if(cvIsNaN(fac) == 1) continue;
404403
E += residual;
405404
R ++;
406405
}
@@ -418,15 +417,15 @@ void VignetteCalib::calib()
418417
}
419418
}
420419

421-
printf("%f residual terms => %f\n", R, sqrtf(E/R));
420+
std::cout << R << " residual terms => " << sqrt(E/R) << std::endl;
422421

423422
// normalize to vignette max. factor 1.
424423
for(int pi=0;pi<hI*wI;pi++)
425424
vignetteFactor[pi] /= maxFac;
426425

427426

428427

429-
logFile << it << " " << n << " " << R << " " << sqrtf(E/R) << "\n";
428+
logFile << it << " " << n << " " << R << " " << sqrt(E/R) << "\n";
430429

431430

432431

@@ -446,17 +445,17 @@ void VignetteCalib::calib()
446445
int idx = x+y*wI;
447446
{
448447
float sum=0, num=0;
449-
if(x<wI-1 && y<hI-1 && !cvIsNaN(vignetteFactorCT[idx+1+wI])) {sum += vignetteFactorCT[idx+1+wI]; num++;}
450-
if(x<wI-1 && !cvIsNaN(vignetteFactorCT[idx+1])) {sum += vignetteFactorCT[idx+1]; num++;}
451-
if(x<wI-1 && y>0 && !cvIsNaN(vignetteFactorCT[idx+1-wI])) {sum += vignetteFactorCT[idx+1-wI]; num++;}
448+
if(x<wI-1 && y<hI-1 && cvIsNaN(vignetteFactorCT[idx+1+wI]) != 1) {sum += vignetteFactorCT[idx+1+wI]; num++;}
449+
if(x<wI-1 && cvIsNaN(vignetteFactorCT[idx+1]) != 1) {sum += vignetteFactorCT[idx+1]; num++;}
450+
if(x<wI-1 && y>0 && cvIsNaN(vignetteFactorCT[idx+1-wI]) != 1) {sum += vignetteFactorCT[idx+1-wI]; num++;}
452451

453-
if(y<hI-1 && !cvIsNaN(vignetteFactorCT[idx+wI])) {sum += vignetteFactorCT[idx+wI]; num++;}
454-
if( !cvIsNaN(vignetteFactorCT[idx])) {sum += vignetteFactorCT[idx]; num++;}
455-
if(y>0 && !cvIsNaN(vignetteFactorCT[idx-wI])) {sum += vignetteFactorCT[idx-wI]; num++;}
452+
if(y<hI-1 && cvIsNaN(vignetteFactorCT[idx+wI]) != 1) {sum += vignetteFactorCT[idx+wI]; num++;}
453+
if( cvIsNaN(vignetteFactorCT[idx]) != 1) {sum += vignetteFactorCT[idx]; num++;}
454+
if(y>0 && cvIsNaN(vignetteFactorCT[idx-wI]) != 1) {sum += vignetteFactorCT[idx-wI]; num++;}
456455

457-
if(y<hI-1 && x>0 && !cvIsNaN(vignetteFactorCT[idx-1+wI])) {sum += vignetteFactorCT[idx-1+wI]; num++;}
458-
if(x>0 && !cvIsNaN(vignetteFactorCT[idx-1])) {sum += vignetteFactorCT[idx-1]; num++;}
459-
if(y>0 && x>0 && !cvIsNaN(vignetteFactorCT[idx-1-wI])) {sum += vignetteFactorCT[idx-1-wI]; num++;}
456+
if(y<hI-1 && x>0 && cvIsNaN(vignetteFactorCT[idx-1+wI]) != 1) {sum += vignetteFactorCT[idx-1+wI]; num++;}
457+
if(x>0 && cvIsNaN(vignetteFactorCT[idx-1]) != 1) {sum += vignetteFactorCT[idx-1]; num++;}
458+
if(y>0 && x>0 && cvIsNaN(vignetteFactorCT[idx-1-wI]) != 1) {sum += vignetteFactorCT[idx-1-wI]; num++;}
460459

461460
if(num>0) vignetteFactorTT[idx] = sum/num;
462461
}
@@ -492,7 +491,7 @@ void VignetteCalib::calib()
492491
delete[] vignetteFactorTT;
493492
delete[] vignetteFactorCT;
494493

495-
for(int i=0;i<n;i++)
494+
for(unsigned long i=0;i<n;i++)
496495
{
497496
delete[] images[i];
498497
delete[] p2imgX[i];

0 commit comments

Comments
 (0)