QPixmap qImgSrc = QPixmap::fromImage(QImage(imgsrc.data, imgsrc.cols, imgsrc.rows, QImage::Format_RGB888)); QPixmap qImgBin = QPixmap::fromImage(QImage(imgthreshold.data, imgthreshold.cols, imgthreshold.rows, QImage::Format_RGB888)); QGraphicsScene scene1, scene2; QGraphicsPixmapItem item1(qImgSrc); QGraphicsPixmapItem item2 (qImgBin); scene1.addItem(&item1); scene2.addItem(&item2); ui.graphSrc->setScene(&scene1); ui.graphBin->setScene(&scene2);这段代码为什么不会在ui上输出对应图片
时间: 2024-04-05 13:35:36 浏览: 72
这段代码没有明显的问题,可能是由于其他原因导致无法在UI上显示图片。可以检查以下几个方面:
1. 确认图片路径和格式是否正确。
2. 确认UI界面上的控件是否正确设置,比如大小、位置等。
3. 检查代码执行过程中是否有异常抛出,比如变量未定义、空指针等问题。
4. 检查是否在正确的线程中执行此段代码,如果是在非UI线程中执行,可能会导致无法在UI上展示图片。
你可以逐一排查以上几个方面,找到问题所在并进行修复。
相关问题
解决/home/student/qt/untitled/func.cpp:61: error: expected unqualified-id before ‘=’ token QPixmap=QPixmap::fromImage(image); ^
这个错误的原因是在 `QPixmap` 类型的对象名称和其构造函数之间没有加上对象名称,导致编译器无法识别该语句。
解决这个问题的方法是将该语句改为:
```cpp
QPixmap pixmap = QPixmap::fromImage(image);
```
这里将 `QPixmap` 类型的对象名称改为 `pixmap`,并在 `=` 前加上对象名称。
这样就可以解决这个错误了。
void Widget::readFarme() { cam->operator>>(*frame); // 读取当前帧信息 cv::cvtColor(*frame, *frame, cv::COLOR_BGR2RGB); // 转化为Qt的RGB格式 QByteArray imageData((const char*)frame->data, frame->cols * frame->rows * frame->elemSize()); QImage image(frame->data, frame->cols, frame->rows, QImage::Format_RGB888); ui->video1_lab->setPixmap(QPixmap::fromImage(image)); // 将图片显示到label上 } void Widget::on_capture_btn_clicked() { QString defaultPath = QDir::homePath() + "/image"; QString filename = QFileDialog::getSaveFileName(this, tr("Save Image"), defaultPath, tr("Images (*.png *.xpm *.jpg)")); // QString filename=QFileDialog::getSaveFileName(this,tr("保存图片"),".",tr("图片(*.png *.jpg *.bmp)")); if(!filename.isEmpty()) { QPixmap pixmap = QPixmap::fromImage(*imag); pixmap.save(filename); //imag->save(filename); } else { qDebug()<<"程序异常"; } ui->captrue_lab->setPixmap(QPixmap::fromImage(*imag)); }图片无法显示在窗口,并且图片保存不了
可能出现问题的地方有以下几个:
1. 在 `readFarme()` 函数中,你将读取的帧数据转换为了 `QImage`,但是在函数结束时并没有将 `*frame` 释放,可能导致内存泄漏。
2. 在 `on_capture_btn_clicked()` 函数中,你使用了未定义的 `*imag` 指针,应该使用 `*frame`。
3. 在保存图片时,可能需要指定保存的文件格式,如 `.png`、`.jpg` 等,否则可能无法正确保存图片。
下面是修改后的代码,你可以参考一下:
```
void Widget::readFarme() {
cam->operator>>(*frame); // 读取当前帧信息
cv::cvtColor(*frame, *frame, cv::COLOR_BGR2RGB); // 转化为Qt的RGB格式
QImage image(frame->data, frame->cols, frame->rows, QImage::Format_RGB888);
ui->video1_lab->setPixmap(QPixmap::fromImage(image)); // 将图片显示到label上
delete frame; // 释放帧数据内存
}
void Widget::on_capture_btn_clicked() {
QString defaultPath = QDir::homePath() + "/image";
QString filename = QFileDialog::getSaveFileName(this, tr("Save Image"), defaultPath, tr("Images (*.png *.xpm *.jpg)"));
if (!filename.isEmpty()) {
QPixmap pixmap = QPixmap::fromImage(*frame);
pixmap.save(filename, Q_NULLPTR, -1); // 指定保存格式
} else {
qDebug() << "程序异常";
}
ui->captrue_lab->setPixmap(QPixmap::fromImage(*frame));
}
```
阅读全文