[PyQt] Pixel Manipulation Very Slow?
zhangmdev at gmail.com
zhangmdev at gmail.com
Tue Aug 24 20:26:01 BST 2010
Also there is some experiment about how to get image data from PyQt to
C/C++ via SIP. Must let the method receive void*
void Word::addColor(void *d)
{
unsigned char* bits = (unsigned char *)d;
for(int j=0; j< _img_h; j++) {
for(int i=0; i< _img_w; i++) {
_color[(j*_img_w+i)*4] = *bits/255.f;//Blue
bits++;
_color[(j*_img_w+i)*4+1] = *bits/255.f;//Green
bits++;
_color[(j*_img_w+i)*4+2] = *bits/255.f;//Red
bits++;
_color[(j*_img_w+i)*4+3] = *bits/255.f;//Alpha
bits++;
}
}
}
I convert the unsigned char array into a float array. In python
self.a.addColor(image.bits());
Seems it is working.
zhang
On Aug 25, 2010 2:06am, zhangmdev at gmail.com wrote:
> Hi,
> I tried SIP to do the pixel manipulation in C/C++. Word is the class I
> adopted from SIP hello world example. Must have a method return void*
> void *Word::display()
> {
> for(int j=0; j for(int i=0; i _data[(j*w+i)*4] = 127;//Blue
> _data[(j*w+i)*4+1] = 127;//Green
> _data[(j*w+i)*4+2] = 255*_red;//Red
> _data[(j*w+i)*4+3] = 0;//Alpha
> }
> }
> return _data;
> }
> actually it returns char* _data, the pixels. I found the order of color
> is a bit interesting, first the Blue, second is Green, third is Red, then
> Alpha. The pointer will be sip.voidptr In python, I think.
> image = QImage(self.a.display() , w, h, QtGui.QImage.Format_RGB32)
> painter.drawImage(0, 0, image)
> Now the speed is quite interactive.
> zhang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20100824/6e3761bc/attachment.html>
More information about the PyQt
mailing list