Qt没有使用openni2显示QImage
我试图在QLabel中显示QImage,但它似乎不起作用。我有这样的想法:Qt没有使用openni2显示QImage,qt,openni,qimage,qlabel,Qt,Openni,Qimage,Qlabel,我试图在QLabel中显示QImage,但它似乎不起作用。我有这样的想法: ui->color->setPixmap(QPixmap::fromImage(colorimg)); ui->color->show(); 图像由以下各项设置: colorimg = getColorImage(); 其中: getColorImage(){ const unsigned char *color_pixel; VideoStream *stream = &
ui->color->setPixmap(QPixmap::fromImage(colorimg));
ui->color->show();
图像由以下各项设置:
colorimg = getColorImage();
其中:
getColorImage(){
const unsigned char *color_pixel;
VideoStream *stream = &color;
int ready_index;
OpenNI::waitForAnyStream(&stream, 1, &ready_index);
if(ready_index == 0)
{
VideoFrameRef color_frame;
color.readFrame(&color_frame);
if(color_frame.isValid())
{
color_pixel = (const unsigned char*)color_frame.getData();
}
}
QImage image = QImage(color_pixel, color.getVideoMode().getResolutionX(), color.getVideoMode().getResolutionY(), QImage::Format_RGB888);
return image;
}
我的应用程序运行时不会生成错误,但名为color的标签仅显示默认文本标签。有人能帮我吗 我已经解决了,问题不在于Openni的使用,而是Qt造成的。Qt只能在控件返回到事件循环时更新UI。因此,您必须调用qApp->processEvents;为了强制更新UI。您希望哪个插件处理图像加载?您是否尝试检查颜色像素是否确实包含数据?请尝试使用包含bytesperline的定义。。。另外,检查返回后数据是否仍然存在。。。QImage只是指向数据,如果数据因任何原因消失,它将无法继续工作。。。另外,您应该在调用此函数和加载此QImage的部分中插入一个片段,也许错误就在那里…@api55谢谢您的建议,但我有点经验不足。那么你能告诉我如何检查彩色像素内容吗?我试过使用cout,我确信它不是空的,但很明显,输出是一系列字符串,我希望它们是正确的内容,但我不知道它们是否是。对于bytesperline的问题,我已经试过使用QImage image=QImagecolor\u pixel,color.getVideoMode.getResolutionX,color.getVideoMode.getResolutionY,color_frame.GetStratidinBytes,QImage::Format_RGB888;,但它仍然不起作用。你可以一直尝试打印前9个单元格,它会给你一些介于0-255之间的信息。。。但是如果你检查函数内部和外部,它应该给你相同的数字。也许你可以尝试使用静态图像,比如所有像素都是黑色的qimage,如果它不工作,可能是其他地方的问题。如果是这样,那么它可能在这个函数中遇到了问题。您是否尝试过创建数组的副本而不是仅仅指向它?