[pygtk] PyGTK + OpenCV

Timo timomlists at gmail.com
Thu Feb 23 01:16:19 WST 2012


Op 22-02-12 12:19, Joseph S. Alcântara schreef:
> Hi, now I get access to FAQ PyGTK talking about threads. It seems a 
> little complicated, and I didn't get it to work yet.
> Like there teaches, I put at the begin, before anything be called, 
> gtk.threads_init() (that my python says it's deprecated and suggest me 
> to use gtk.gdk.threads_init, as well as threads_enter/leave)
>
> So, I put gtk.main() between thrads_enter/leave and every part of code 
> I want to be a thread, I put into this code (enter/leave) but it 
> continue working the same. ie, it's now working.
>
> I'm did something like this, into a class:
>
> gtk.gdk.threads_enter
> self.th <http://self.th> = Thread(target=self.camera.runvideo)
> self.th.start()
> gtk.gdk.threads_leave
>
> It's a class that calls a gtk.Window. After, in self.camera.runvideo, 
> it calls famous routine to show images from webcam
>
I think it's also in the FAQ, but you shouldn't do any GUI stuff in a 
thread, and if you do so, call it with gobject.idle_add().

Cheers,
Timo

> *Joseph Soares Alcântara*
> Engenharia da Computação - 8º semestre
> Universidade Federal do Ceará - UFC
> Sobral - Ceará
>
> +--------------------------------------------------------------------------+
> .| - °v°...A liberdade não pode ser comprada e sim     |
> .| -/(_)\..conquistada. Conquiste a sua também use   |
> .| - ^^                  G N U / L I N U X                          |
> +--------------------------------------------------------------------------+
>
>
>
> 2012/2/21 Joseph S. Alcântara <josephseraos at gmail.com 
> <mailto:josephseraos at gmail.com>>
>
>     How do I show a IplImage in a gtk.Image?
>
>     *Joseph Soares Alcântara*
>     Engenharia da Computação - 8º semestre
>     Universidade Federal do Ceará - UFC
>     Sobral - Ceará
>
>     +--------------------------------------------------------------------------+
>     .| - °v°...A liberdade não pode ser comprada e sim     |
>     .| -/(_)\..conquistada. Conquiste a sua também use   |
>     .| - ^^                  G N U / L I N U X                          |
>     +--------------------------------------------------------------------------+
>
>
>
>     2012/2/21 Joseph S. Alcântara <josephseraos at gmail.com
>     <mailto:josephseraos at gmail.com>>
>
>         I cannot access FAQ, I think it's not working now.
>         Don't you have any example how could I solve that?
>         Yes, I'd like to show image from cv.QueryFrame in a gtk.Image,
>         But I am new in this, I'm learning a little slow.
>         It's a project to the university. We have an Open Source Study
>         Group, and I have to create a program using python + opencv + gtk.
>
>         Thank you
>
>         *Joseph Soares Alcântara*
>         Engenharia da Computação - 8º semestre
>         Universidade Federal do Ceará - UFC
>         Sobral - Ceará
>
>         +--------------------------------------------------------------------------+
>         .| - °v°...A liberdade não pode ser comprada e sim     |
>         .| -/(_)\..conquistada. Conquiste a sua também use   |
>         .| - ^^                  G N U / L I N U X                   
>               |
>         +--------------------------------------------------------------------------+
>
>
>
>         2012/2/21 John Stowers <john.stowers.lists at gmail.com
>         <mailto:john.stowers.lists at gmail.com>>
>
>             IIRC opecv starts a mainloop when create window is called.
>
>             In general, don't use threads unless you have read the FAQ and
>             understand what you are doing.
>
>             John
>
>             2012/2/21 Joseph S. Alcântara <josephseraos at gmail.com
>             <mailto:josephseraos at gmail.com>>:
>             > Even if I don't use, ie, if I comment the lines where
>             NamedWindow, ShowImage
>             > and WaitKey appear it freezes too.
>             >
>             > Joseph Soares Alcântara
>             > Engenharia da Computação - 8º semestre
>             > Universidade Federal do Ceará - UFC
>             > Sobral - Ceará
>             >
>             >
>             +--------------------------------------------------------------------------+
>             > .| - °v°...A liberdade não pode ser comprada e sim     |
>             > .| -/(_)\..conquistada. Conquiste a sua também use   |
>             > .| - ^^                  G N U / L I N U X             
>                         |
>             >
>             +--------------------------------------------------------------------------+
>             >
>             >
>             >
>             > 2012/2/21 John Stowers <john.stowers.lists at gmail.com
>             <mailto:john.stowers.lists at gmail.com>>
>             >>
>             >> GTK is not threadsafe.
>             >>
>             >> If opencv shows a gtk mainwindow in cv.ShowImage, and
>             that occurs in a
>             >> different thread to the one running gtk_main, then
>             unpredictable
>             >> crashes and odd behaviour will result.
>             >>
>             >> Please check the pygtk FAQ for how to use threading and
>             pygtk.
>             >>
>             >> I suggest displaying the image yourself in by getting
>             the data from
>             >> the IPL image and copying it into a GtkImage. Or be
>             much more careful
>             >> with which operations you do in which thread (i.e.
>             cv.ShowImage,
>             >> cv.WaitKey)
>             >>
>             >> John
>             >>
>             >> 2012/2/21 Joseph S. Alcântara <josephseraos at gmail.com
>             <mailto:josephseraos at gmail.com>>:
>             >> > Hi, Thank you for response to me.
>             >> >
>             >> > See, can I sand you my program to you see what I am
>             making? I've used
>             >> > Thread, but seems like is not working like I want.
>             >> >
>             >> > You must run from main.py
>             >> >
>             >> > Joseph Soares Alcântara
>             >> > Engenharia da Computação - 8º semestre
>             >> > Universidade Federal do Ceará - UFC
>             >> > Sobral - Ceará
>             >> >
>             >> >
>             >> >
>             +--------------------------------------------------------------------------+
>             >> > .| - °v°...A liberdade não pode ser comprada e sim     |
>             >> > .| -/(_)\..conquistada. Conquiste a sua também use   |
>             >> > .| - ^^                  G N U / L I N U X           
>                           |
>             >> >
>             >> >
>             +--------------------------------------------------------------------------+
>             >> >
>             >> >
>             >> >
>             >> > 2012/2/19 Hart's Antler <bhartsho at yahoo.com
>             <mailto:bhartsho at yahoo.com>>
>             >> >>
>             >> >> Hi Joseph,
>             >> >> I got GTK and OpenCV working together using threads.
>              This example
>             >> >> works
>             >> >> with CPython2, CPython3 and PyPy, see my blog post.
>             >> >> http://pyppet.blogspot.com/2011/12/rpythonic-044.html
>             >> >>
>             >> >> -brett-
>             >> >>
>             >> >> ________________________________
>             >> >> From: Joseph S. Alcântara <josephseraos at gmail.com
>             <mailto:josephseraos at gmail.com>>
>             >> >> To: pygtk at daa.com.au <mailto:pygtk at daa.com.au>
>             >> >> Sent: Sunday, February 19, 2012 9:46 AM
>             >> >> Subject: [pygtk] PyGTK + OpenCV
>             >> >>
>             >> >> hi, I'm writing a application that uses pygtk and
>             opencv. and I had a
>             >> >> problem. When I run the program it shows a gui. So
>             far so good. But,
>             >> >> when  I
>             >> >> click in a menuitem, it should call a functino that
>             runs the famous
>             >> >> routine
>             >> >> to show a video from webcam. But in this moment, the
>             app freezes. I
>             >> >> have
>             >> >> tried to use thread, but opencv gui runs just after
>             I call
>             >> >> gtk.main_quit().
>             >> >> What could solve my problem? Thanks.
>             >> >>
>             >> >> Estou escrevendo um programa em python, usando pygtk
>             e opencv. Quando
>             >> >> rodo
>             >> >> o programa, aparece uma janela e até aí, beleza. Mas
>             quando eu clico em
>             >> >> um
>             >> >> menuitem, ele deve chamar uma função que roda a
>             famosa rotina que exibe
>             >> >> um
>             >> >> vídeo a partir da webcam. No entanto, neste momento,
>             o programa trava.
>             >> >> Então, eu tentei usar Thread, mas a parte do opencv
>             só roda depois que
>             >> >> eu
>             >> >> fecho a janela, chamando gtk.main_quit(). O que
>             poderia ser? Obrigado
>             >> >> desde
>             >> >> já.
>             >> >>
>             >> >> Joseph Soares Alcântara
>             >> >> Engenharia da Computação - 8º semestre
>             >> >> Universidade Federal do Ceará - UFC
>             >> >> Sobral - Ceará
>             >> >>
>             >> >>
>             >> >>
>             >> >>
>             +--------------------------------------------------------------------------+
>             >> >> .| - °v°...A liberdade não pode ser comprada e sim     |
>             >> >> .| -/(_)\..conquistada. Conquiste a sua também use   |
>             >> >> .| - ^^                  G N U / L I N U X         
>                             |
>             >> >>
>             >> >>
>             >> >>
>             +--------------------------------------------------------------------------+
>             >> >>
>             >> >>
>             >> >> _______________________________________________
>             >> >> pygtk mailing list pygtk at daa.com.au
>             <mailto:pygtk at daa.com.au>
>             >> >> http://www.daa.com.au/mailman/listinfo/pygtk
>             >> >> Read the PyGTK FAQ: http://faq.pygtk.org/
>             >> >>
>             >> >
>             >> >
>             >> > _______________________________________________
>             >> > pygtk mailing list pygtk at daa.com.au
>             <mailto:pygtk at daa.com.au>
>             >> > http://www.daa.com.au/mailman/listinfo/pygtk
>             >> > Read the PyGTK FAQ: http://faq.pygtk.org/
>             >
>             >
>
>
>
>
>
>
> _______________________________________________
> pygtk mailing list   pygtk at daa.com.au
> http://www.daa.com.au/mailman/listinfo/pygtk
> Read the PyGTK FAQ: http://faq.pygtk.org/



More information about the pygtk mailing list