3 votes

Barre de progression OpenCV

Peut-on implémenter une progressBar dans une application OpenCV ? Peut-être au dessus d'une image ?

13voto

Pepe Points 3506

Je ne connais pas de classe de barre de progression intégrée, mais vous pouvez probablement en émuler une ou écrire la vôtre en dessinant deux rectangles l'un sur l'autre. L'un représentant la gamme complète et l'autre représentant la progression.

So something like that ...

0voto

Si vous voulez utiliser seulement OpenCV, ce que j'utilise est de multiplier un nombre entre 0 et 1 à une image ouverte dans une fenêtre. i.e : si vous utilisez le nouveau C++ Opencv :

Mat A=...some image that show for example the text "DONE" or your dog or cat :P
double alpha=0;
int N=100;//steps
for(int i=1;1<N;i++)
{
// some process...
alpha=i/N;
A=A*alpha;// and alpha is a scalar
// if you are using the old C Opencv use cvConvertScale
//then show A
imshow("Progress Image...",A)
waitKey(666);
}

L'effet est très agréable à mon avis, mieux qu'une simple barre de progression. Vous avez seulement besoin de la bibliothèque opencv, si l'image est petite est très légère pour le CPU.

Mais si vous voulez voir une "barre", le moyen le plus simple est d'utiliser la fonction ligne :

C++: void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)

pt1 est un point dans un coin de votre image, pt2 est le point dans lequel leur axe x ou Y change par exemple dans l'autre code :

axis=(int)(image.size().width*(i/N));

-1voto

Gaurav Raj Points 158

Si vous avez vraiment besoin d'une interface graphique conviviale, pourquoi ne pas utiliser Qt ? Il peut être facilement intégré avec opencv et il y a beaucoup d'outils pour personnaliser et créer des interfaces graphiques. Jetez un coup d'oeil au lien officiel fourni par Qt pour intégrer opencv. http://qt-project.org/wiki/OpenCV_with_Qt

-1voto

Vous pouvez utiliser WINAPI ProgressBar, mais ce n'est pas une bonne idée.

Créez d'abord une fenêtre WINAPI, par exemple :

HWND hwnd = CreateWindowEx(0, "STATIC", "#img", WS_CHILD | WS_VISIBLE,
            0, 40, 800, 500, hwnd, NULL, hInstance, NULL);

Et une barre de progression sur cette fenêtre :

HWND hProgressBar = CreateWindowEx( 0, PROGRESS_CLASS, NULL, WS_CHILD | WS_VISIBLE,
10, 10, 200, 15, hwnd,( HMENU ) 200, hInstance, NULL );

Si vous avez une application et une fenêtre WINAPI prête à fonctionner, vous pouvez créer une fenêtre openCV :

namedWindow("openCV", 1); 
SetParent((HWND)cvGetWindowHandle("openCV"), hwnd);

Et cacher la fenêtre openCV :

HWND win_handle = FindWindow(0, "openCV");
        if (!win_handle)
        {
            printf("Failed FindWindow\n");
        }
        else
        {
            ShowWindow(win_handle, SW_HIDE);
        }

Maintenant, vous avez une barre de progression fonctionnelle au-dessus d'une image.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X