Commit 9e239c7a authored by Alexander Alekhin's avatar Alexander Alekhin

highgui: refactor GTK backend

- eliminate legacy C code, used fields
- fix mutex synchronization issues
- set trackbar min/max without unnecessary truncation; allow negative values
parent 19270103
This diff is collapsed.
...@@ -15,6 +15,7 @@ String winName="False color"; ...@@ -15,6 +15,7 @@ String winName="False color";
static void TrackColorMap(int x, void *r) static void TrackColorMap(int x, void *r)
{ {
std::cout << "selected: " << x << std::endl;
ParamColorMar *p = (ParamColorMar*)r; ParamColorMar *p = (ParamColorMar*)r;
Mat dst; Mat dst;
p->iColormap= x; p->iColormap= x;
...@@ -23,9 +24,8 @@ static void TrackColorMap(int x, void *r) ...@@ -23,9 +24,8 @@ static void TrackColorMap(int x, void *r)
if (!lutRND) if (!lutRND)
{ {
RNG ra; RNG ra;
Mat *palette = new Mat(256, 1, CV_8UC3); lutRND = makePtr<Mat>(256, 1, CV_8UC3);
ra.fill(*palette, RNG::UNIFORM, 0, 256); ra.fill(*lutRND, RNG::UNIFORM, 0, 256);
lutRND = Ptr<Mat>(palette);
} }
applyColorMap(p->img, dst, *lutRND.get()); applyColorMap(p->img, dst, *lutRND.get());
} }
...@@ -77,6 +77,7 @@ static void TrackColorMap(int x, void *r) ...@@ -77,6 +77,7 @@ static void TrackColorMap(int x, void *r)
colorMapName = "User colormap : random"; colorMapName = "User colormap : random";
break; break;
} }
std::cout << "> " << colorMapName << std::endl;
putText(dst, colorMapName, Point(10, 20), cv::FONT_HERSHEY_SIMPLEX, 1, Scalar(255, 255, 255)); putText(dst, colorMapName, Point(10, 20), cv::FONT_HERSHEY_SIMPLEX, 1, Scalar(255, 255, 255));
imshow(winName, dst); imshow(winName, dst);
} }
...@@ -144,7 +145,10 @@ int main(int argc, char** argv) ...@@ -144,7 +145,10 @@ int main(int argc, char** argv)
setTrackbarMax("colormap", winName, cv::COLORMAP_PARULA+1); setTrackbarMax("colormap", winName, cv::COLORMAP_PARULA+1);
setTrackbarPos("colormap", winName, -1); setTrackbarPos("colormap", winName, -1);
TrackColorMap(0,(void*)&p); TrackColorMap((int)getTrackbarPos("colormap", winName),(void*)&p);
waitKey(0); while (waitKey(0) != 27)
{
std::cout << "Press 'ESC' to exit" << std::endl;
}
return 0; return 0;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment