Skip to content

Commit d4dabfb

Browse files
committed
ximgproc: fix paillou_demo
1 parent 60a510c commit d4dabfb

File tree

1 file changed

+32
-29
lines changed

1 file changed

+32
-29
lines changed

modules/ximgproc/samples/paillou_demo.cpp

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -48,62 +48,65 @@ using namespace std;
4848

4949
int aa = 100, ww = 10;
5050

51-
Ptr<Mat> img;
5251
const char* window_name = "Gradient Modulus";
5352

5453
static void DisplayImage(Mat x,string s)
5554
{
56-
vector<Mat> sx;
57-
split(x, sx);
58-
vector<double> minVal(3), maxVal(3);
59-
for (int i = 0; i < static_cast<int>(sx.size()); i++)
60-
{
61-
minMaxLoc(sx[i], &minVal[i], &maxVal[i]);
62-
}
63-
maxVal[0] = *max_element(maxVal.begin(), maxVal.end());
64-
minVal[0] = *min_element(minVal.begin(), minVal.end());
65-
Mat uc;
66-
x.convertTo(uc, CV_8U,255/(maxVal[0]-minVal[0]),-255*minVal[0]/(maxVal[0]-minVal[0]));
67-
imshow(s, uc);
55+
vector<Mat> sx;
56+
split(x, sx);
57+
vector<double> minVal(3), maxVal(3);
58+
for (int i = 0; i < static_cast<int>(sx.size()); i++)
59+
{
60+
minMaxLoc(sx[i], &minVal[i], &maxVal[i]);
61+
}
62+
maxVal[0] = *max_element(maxVal.begin(), maxVal.end());
63+
minVal[0] = *min_element(minVal.begin(), minVal.end());
64+
Mat uc;
65+
x.convertTo(uc, CV_8U,255/(maxVal[0]-minVal[0]),-255*minVal[0]/(maxVal[0]-minVal[0]));
66+
imshow(s, uc);
6867
}
6968

7069

7170
/**
7271
* @function paillouFilter
7372
* @brief Trackbar callback
7473
*/
75-
static void PaillouFilter(int, void*)
74+
static void PaillouFilter(int, void*pm)
7675
{
76+
Mat img = *((Mat*)pm);
7777
Mat dst;
78-
double a=aa/100.0,w=ww/100.0;
78+
double a=aa/100.0, w=ww/100.0;
7979
Mat rx,ry;
80-
GradientPaillouX(*img.get(),rx,a,w);
81-
GradientPaillouY(*img.get(),ry,a,w);
80+
GradientPaillouX(img, rx, a, w);
81+
GradientPaillouY(img, ry, a, w);
8282
DisplayImage(rx, "Gx");
8383
DisplayImage(ry, "Gy");
84-
add(rx.mul(rx),ry.mul(ry),dst);
85-
sqrt(dst,dst);
84+
add(rx.mul(rx), ry.mul(ry), dst);
85+
sqrt(dst, dst);
8686
DisplayImage(dst, window_name );
8787
}
8888

8989

9090
int main(int argc, char* argv[])
9191
{
92-
Mat *m=new Mat;
93-
if (argc == 2)
94-
*m = imread(argv[1]);
95-
if (m->empty())
92+
if (argc < 2)
93+
{
94+
cout << "usage: paillou_demo [image]" << endl;
95+
return 1;
96+
}
97+
Mat img = imread(argv[1]);
98+
if (img.empty())
9699
{
97100
cout << "File not found or empty image\n";
101+
return 1;
98102
}
99-
img = Ptr<Mat>(m);
100-
imshow("Original",*img.get());
103+
imshow("Original",img);
101104
namedWindow( window_name, WINDOW_AUTOSIZE );
102105

103106
/// Create a Trackbar for user to enter threshold
104-
createTrackbar( "a:",window_name, &aa, 400, PaillouFilter );
105-
createTrackbar( "w:", window_name, &ww, 400, PaillouFilter );
106-
PaillouFilter(0,NULL);
107+
createTrackbar( "a:",window_name, &aa, 400, PaillouFilter, &img );
108+
createTrackbar( "w:", window_name, &ww, 400, PaillouFilter, &img );
109+
PaillouFilter(0, &img);
107110
waitKey();
108111
return 0;
109-
}
112+
}

0 commit comments

Comments
 (0)