Skip to content

Commit 044bb5e

Browse files
committed
Fix some bugs.
1 parent 12d64fe commit 044bb5e

File tree

2 files changed

+35
-30
lines changed

2 files changed

+35
-30
lines changed

modules/photometric_calib/include/opencv2/photometric_calib/VignetteCalib.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class CV_EXPORTS VignetteCalib
4343
// remove pixel with absolute gradient larger than this from the optimization.
4444
int _maxAbsGrad;
4545

46-
Matx33f _cameraMatrix;
46+
Mat _cameraMatrix;
4747
Mat _distCoeffs;
4848

4949
Reader *imageReader;

modules/photometric_calib/src/VignetteCalib.cpp

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -67,35 +67,35 @@ void VignetteCalib::displayImage(float *I, int w, int h, std::string name)
6767
if(vmax < I[i]) vmax = I[i];
6868
}
6969

70-
cv::Mat img = cv::Mat(h,w,CV_8UC3);
70+
Mat img = Mat(h,w,CV_8UC3);
7171

7272
for(int i=0;i<w*h;i++)
7373
{
7474
//isnanf? isnan?
75-
if(cvIsNaN(I[i]) == 1) img.at<cv::Vec3b>(i) = cv::Vec3b(0,0,255);
76-
else img.at<cv::Vec3b>(i) = cv::Vec3b(255*(I[i]-vmin) / (vmax-vmin),255*(I[i]-vmin) / (vmax-vmin),255*(I[i]-vmin) / (vmax-vmin));
75+
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));
7777
}
7878

7979
printf("plane image values %f - %f!\n", vmin, vmax);
80-
cv::imshow(name, img);
81-
cv::imwrite("vignetteCalibResult/plane.png", img);
80+
imshow(name, img);
81+
imwrite("vignetteCalibResult/plane.png", img);
8282
}
8383

8484
void VignetteCalib::displayImageV(float *I, int w, int h, std::string name)
8585
{
86-
cv::Mat img = cv::Mat(h,w,CV_8UC3);
86+
Mat img = Mat(h,w,CV_8UC3);
8787
for(int i=0;i<w*h;i++)
8888
{
8989
if(cvIsNaN(I[i]) == 1)
90-
img.at<cv::Vec3b>(i) = cv::Vec3b(0,0,255);
90+
img.at<Vec3b>(i) = Vec3b(0,0,255);
9191
else
9292
{
9393
float c = 254*I[i];
94-
img.at<cv::Vec3b>(i) = cv::Vec3b(c,c,c);
94+
img.at<Vec3b>(i) = Vec3b(c,c,c);
9595
}
9696

9797
}
98-
cv::imshow(name, img);
98+
imshow(name, img);
9999
}
100100

101101
void VignetteCalib::calib()
@@ -104,8 +104,6 @@ void VignetteCalib::calib()
104104
if(-1 == system("mkdir vignetteCalibResult")) printf("could not delete old vignetteCalibResult folder!\n");
105105

106106
// affine map from plane cordinates to grid coordinates.
107-
Mat test2(3,3,CV_8U);
108-
Matx33f test3(test2);
109107
Matx33f K_p2idx = Matx33f::eye();
110108
Mat1f test = Mat1f::eye(3,3);
111109
K_p2idx(0,0) = _gridWidth / _facW;
@@ -120,13 +118,19 @@ void VignetteCalib::calib()
120118
int wI = wO, hI = hO;
121119

122120
Ptr<aruco::DetectorParameters> parameters = aruco::DetectorParameters::create();
123-
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(cv::aruco::DICT_6X6_250);
121+
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(aruco::DICT_6X6_250);
124122

125123
std::vector<float*> images;
126124
std::vector<float*> p2imgX;
127125
std::vector<float*> p2imgY;
128126

129127
float meanExposure = 0.f;
128+
for(size_t i=0;i<imageReader->getNumImages();i+=_imageSkip)
129+
meanExposure+=imageReader->getExposureDuration(i);
130+
meanExposure = meanExposure/imageReader->getNumImages();
131+
132+
if(meanExposure==0) meanExposure = 1;
133+
130134
for(size_t i=0; i < imageReader->getNumImages(); ++i)
131135
{
132136
std::vector<int> markerIds;
@@ -205,9 +209,9 @@ void VignetteCalib::calib()
205209
images.push_back(image);
206210

207211
// debug-plot.
208-
cv::Mat dbgImg(hI, wI, CV_8UC3);
209-
for(int i=0;i<wI*hI;i++)
210-
dbgImg.at<cv::Vec3b>(i) = cv::Vec3b(imgRaw[i], imgRaw[i], imgRaw[i]);
212+
Mat dbgImg(hI, wI, CV_8UC3);
213+
for(int j=0;j<wI*hI;j++)
214+
dbgImg.at<Vec3b>(j) = Vec3b(imgRaw[j], imgRaw[j], imgRaw[j]);
211215

212216
for(int x=0; x<=_gridWidth;x+=200)
213217
for(int y=0; y<=_gridHeight;y+=10)
@@ -222,7 +226,8 @@ void VignetteCalib::calib()
222226
int v_dT = plane2imgY[idxT]+0.5;
223227

224228
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)
225-
cv::line(dbgImg, cv::Point(u_dS, v_dS), cv::Point(u_dT, v_dT), cv::Scalar(0,0,255), 10, CV_AA);
229+
line(dbgImg, Point(u_dS, v_dS), Point(u_dT, v_dT), Scalar(0,0,255), 10, LINE_AA);
230+
//line(dbgImg, Point(u_dS, v_dS), Point(u_dT, v_dT), Scalar(0,0,255), 10, CV_AA);
226231
}
227232

228233
for(int x=0; x<=_gridWidth;x+=10)
@@ -238,7 +243,7 @@ void VignetteCalib::calib()
238243
int v_dT = plane2imgY[idxT]+0.5;
239244

240245
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)
241-
cv::line(dbgImg, cv::Point(u_dS, v_dS), cv::Point(u_dT, v_dT), cv::Scalar(0,0,255), 10, CV_AA);
246+
line(dbgImg, Point(u_dS, v_dS), Point(u_dT, v_dT), Scalar(0,0,255), 10, LINE_AA);
242247
}
243248

244249
for(int x=0; x<_gridWidth;x++)
@@ -254,16 +259,16 @@ void VignetteCalib::calib()
254259
}
255260
}
256261

257-
cv::imshow("inRaw",dbgImg);
262+
imshow("inRaw",dbgImg);
258263

259264
if(rand()%40==0)
260265
{
261266
char buf[1000];
262-
snprintf(buf,1000,"vignetteCalibResult/img%d.png",i);
263-
cv::imwrite(buf, dbgImg);
267+
snprintf(buf,1000,"vignetteCalibResult/img%lu.png",i);
268+
imwrite(buf, dbgImg);
264269
}
265270

266-
cv::waitKey(1);
271+
waitKey(1);
267272

268273
p2imgX.push_back(plane2imgX);
269274
p2imgY.push_back(plane2imgY);
@@ -460,19 +465,19 @@ void VignetteCalib::calib()
460465

461466
{
462467
displayImageV(vignetteFactorTT, wI, hI, "VignetteSmoothed");
463-
cv::Mat wrap = cv::Mat(hI, wI, CV_32F, vignetteFactorTT)*254.9*254.9;
464-
cv::Mat wrap16;
468+
Mat wrap = Mat(hI, wI, CV_32F, vignetteFactorTT)*254.9*254.9;
469+
Mat wrap16;
465470
wrap.convertTo(wrap16, CV_16U,1,0);
466-
cv::imwrite("vignetteCalibResult/vignetteSmoothed.png", wrap16);
467-
cv::waitKey(50);
471+
imwrite("vignetteCalibResult/vignetteSmoothed.png", wrap16);
472+
waitKey(50);
468473
}
469474
{
470475
displayImageV(vignetteFactor, wI, hI, "VignetteOrg");
471-
cv::Mat wrap = cv::Mat(hI, wI, CV_32F, vignetteFactor)*254.9*254.9;
472-
cv::Mat wrap16;
476+
Mat wrap = Mat(hI, wI, CV_32F, vignetteFactor)*254.9*254.9;
477+
Mat wrap16;
473478
wrap.convertTo(wrap16, CV_16U,1,0);
474-
cv::imwrite("vignetteCalibResult/vignette.png", wrap16);
475-
cv::waitKey(50);
479+
imwrite("vignetteCalibResult/vignette.png", wrap16);
480+
waitKey(50);
476481
}
477482
}
478483
}

0 commit comments

Comments
 (0)