QT中用label标签添加图片

QT中用label标签添加图片,第1张

void ScrollArea::set_image(char *filename)

{

QImage *ppm = new QImage(filename)

label = new QLabel()

printf("ppm->width()=%d, ppm->height()=%d\n",ppm->width(), ppm->height())//获取图片的宽度和高度

label->setPixmap(QPixmap::fromImage(*ppm))

this->setWidget(label)

/*设置窗口最大高度和宽度为1024*768*/

this->setMaximumHeight(768)

this->setMaximumWidth(1024)

this->resize(QSize( ppm->width()+5, ppm->height() +5))

return

}

#ifndef CAMERAGROUPBOX_H

#define CAMERAGROUPBOX_H

#include <QImage>

class QPaintEvent

class CameraWidget : public QLabel

{

Q_OBJECT

public:

CameraWidget(QWidget *parent=NULL)

~CameraWidget()

protected:

void paintEvent(QPaintEvent *event)

private:

QImage m_image//绘画到界面的图像

}

#endif // CAMERAGROUPBOX_H #include "CameraWidget.h"

#include <QPainter>

CameraWidget::CameraWidget(QWidget *parent)

: QLabel(parent)

{

m_image.load(":/Resources/cameraBk.jpg")//加载的需要画图的图片

}

CameraWidget::~CameraWidget()

{

}

void CameraWidget::paintEvent ( QPaintEvent * )

{

QPainter painter(this)

painter.drawImage(Rect(), m_image)

//在此处画线,从框架最左上角画线到最右下角

painter.drawLine(0,0,width(),height())

}

1、如果你是从文件读,

那么直接用QImage或QPixmap的带有文件路径的构造函数构造一个对象,

然后用QLabel的setPixmap

2、如果你的图像已经存在内存中,你只是想进行如ARGB转换灰度或是2值图像的话,

那么你可以用QImage的成员函数convertToFormat进行转换

其中第一个参数是一个枚举类型,表示的是你的图像类型,如8位的灰度类型或是RGB类型等

文档解释的很清楚,可以自己看。

*注意一点就是QImage可以转换成QPimap,转换是很快的,浅引用里面的ImageData而已,详细内容你可以看源码,于是你就可以通过QLabel的setPixmap进行显示了

3、如果你是想通过字节自己变化,

那就直接通过QImage或是QPixmap的scanLine获取起始的字节指针

然后根据图像的宽度进行遍历就是,关于RGB和灰度转换的算法或是根据阈值转换2值图像的算法有很多,自己去研究吧。最后将你处理的设置到QLabel就行了

一点建议:如果你真要在Qt上做一些图像算子处理什么的,别用QLabel,QLabel是轻量级的,你最好是用GraphicsView-Scene-item这个去做

补充的问题回答:

你颜色空间都不一样,那就不能直接读了,你可以先将YUV的颜色空间转换成Rgb24的,Qt只支持HSV,HSL,CMYK,RGB这四种颜色空间。。

所以你自己先将该图像的字节流数据用文件流的方式读,然后根据颜色空间转换的算法转换成RGB24,然后可以根据你转换后的整个字节数组获得一个QImage或是QPixmap

继续补充:二值图就是1个像素是1位,不是很清楚你问的问题“如何知道二值图是24位或8位”,你能描述清楚点么,你要是不懂图像处理,就搞个PPT或是书研究下基础吧。

你要是有什么问题可以HI我…


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11867838.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存