我遇到了将Image对象(使用Point Grej FlyCapture2 SDK捕获)传递给QImage对象的问题。我正在通过与功能的图像数据相关联的指针:从unsigned char构造QImage * data
virtual unsigned char* FlyCapture2::GetData ( )
,然后通过加载数据:
两个图像对象的数据的QImage::QImage (uchar * data, int width, int height, int bytesPerLine, Format format)
格式是8位单色。 BytesPerLine参数应该等于图像的宽度(我已经通过将FlyCapture2 :: Image保存为.bmp并将其加载到QImage中来检查它)。
你的问题是从无符号char *转换为uchar *吗? 你有其他想法吗?逐个像素复制图像太慢了。
编辑:我将由FlyCapture捕获的图像转换为FlyCapture2::PIXEL_FORMAT_RGB8
,其中:R = G = B = 8位,在PGR::SnapShot()
函数内。 SnapShot()返回unsigned char
* const。 这里是我的Qt显示功能的一部分:
unsigned char *const img = PGRSystem->SnapShot();
QImage Img(img, 1024, 768, QImage::Format_RGB888);
QGraphicsScene *Scene = new QGraphicsScene();
Scene->addPixmap(QPixmap::fromImage(Img));
ui.ImageView->setScene(Scene);
ui.ImageView->fitInView(ui.ImageView->itemAt(100,100));
delete [] Scene;
我也试图挽救图到文件,却得到了未处理的异常即可。我尝试过其他的像素格式对(FlyCapture2::PIXEL_FORMAT_RGB
- 24位RGB与与QImage::RGB32
)
还值得一提的是QImage的constuctor,我现在用的,不设置colorTable(我得到异常时检查QImage是否在grayScale中)。 我想我需要多一点帮助。
你遇到什么问题? – hmuelner 2010-10-27 10:31:39
图像传递不正确。在QGraphicsView上设置场景时,我收到空白图片。 – Marcin 2010-10-27 10:40:37
uchar是一个unsigned char,所以不应该是问题。您可能需要发布一些实际的代码,以便进一步确定。 – 2010-10-27 13:54:31