• 首页
  • 博客
  • 学院
  • 下载
  • GitChat
  • TinyMind
  • 论坛
  • 问答
  • 商城
  • 写博客
  • 发Chat
  • 登录注册

youngyang_sjtu的博客

RSS订阅

QImage像素级操作

2018年03月20日 14:31:04

阅读数:754

转自http://blog.csdn.net/silangquan/article/details/41008183

这篇文章主要阐述了如何使用Qt在像素级别上对图像进行操作,并实现了一些图像效果,这些效果主要有:灰度,模糊,锐化,添加相框,金属质感,改变图像饱和度,亮度还有白平衡。

scanLine 返回某一行数据,转换为QRgb指针可进行直接有效的像素存取操作。

介绍

文章中,我们将讨论在Qt中修改图像的一些技术和算法,在这之前,你必须知道在Qt中操作图像的一些方法。

.在Qt中有两种表示图像的类,Qt:QImage和QPixmap,还有QBitmap来存储单色的图像,比如遮罩,QPicture在存储QPainter的一些操作指令。

当我们想要在屏幕上绘制图像的时候,最快的方法就是使用QPixmap,不过坏处就是无法访问和修改像素;

QImage在IO操作中有很快的速度,并且给出了访问像素的接口,这篇文章中我们就使用这个类。

.如果你是要处理大的图片,比如摄像头拍摄的照片,这种情况最好是将原图缩小之后作为预览图显示在屏幕上,除非我们允许用户缩放图像。有两种加载并缩放图像的方法。

。将图像加载进QImage或者QPixmap,然后调整大小:

[cpp] view plain copy

  1. QImage image("sample.png");
  2. image = image.scaled(width, height);

使用QImageReader来读取和缩放图片,然后再加载进QImage中。QImageReader无法将一张图片加载进QPixmap中去,但是可以使用静态方法 QPixmap::fromImage(QImage img)从QImage中加载进QPixmap。这个方法非常快,并且不需要加载大图的内存开销:

[cpp] view plain copy

  1. QImageReader imgReader("sample.png");
  2. imgReader.setScaledSize(QSize(width, height));
  3. QImage * image;
  4. imgReader.read(image);

。每一张图片都是由像素点组成,每一个像素都有三个通道:红,绿,蓝,还有一个alpha通道来保存透明度(JPEG格式的图片不支持透明)。每个通道的值是0-255,三个通道都是0的话,表示黑色,都是255表示白色。这篇文章中我们用RGB来表示一种颜色,也就是三个通道的值。

。相比于一个像素一个像素地读取,uchar *  QImage::scanLine(int i)可以一次读取整行的像素值,会更加高效,下面的例子就是按行读取的例子,也是我们将要讲的第一个例子,转灰度图。

[cpp] view plain copy

  1. QImage * MainWindow::greyScale(QImage * origin){
  2. QImage * newImage = new QImage(origin->width(), origin->height(), QImage::Format_ARGB32);
  3. QRgb * line;
  4. for(int y = 0; y<newImage->height(); y++){
  5. QRgb * line = (QRgb *)origin->scanLine(y);
  6. for(int x = 0; x<newImage->width(); x++){
  7. int average = (qRed(line[x]) + qGreen(line[x]) + qRed(line[x]))/3;
  8. newImage->setPixel(x,y, qRgb(average, average, average));
  9. }
  10. }
  11. return newImage;
  12. }

灰度

我们要学习的第一个技术就是将彩色图转换成灰度图,我们首先要明白的一点就是,其实标准的灰度图就是每个像素点的三个通道的值一样或者近似,我们的策略就是将每个像素的每个通道的值都调成一样,取R,G,B值为三者的算数平均数就可以了,比如原色是RGB(169,204,69), 那么最终的RGB就是(169+204+69)/3 = 147.

[cpp] view plain copy

  1. QImage * MainWindow::greyScale(QImage * origin){
  2. QImage * newImage = new QImage(origin->width(), origin->height(), QImage::Format_ARGB32);
  3. QColor oldColor;
  4. for(int x = 0; x<newImage->width(); x++){
  5. for(int y = 0; y<newImage->height(); y++){
  6. oldColor = QColor(origin->pixel(x,y));
  7. int average = (oldColor.red()+oldColor.green()+oldColor.blue())/3;
  8. newImage->setPixel(x,y,qRgb(average,average,average));
  9. }
  10. }
  11. return newImage;
  12. }

原始图

灰度图

亮度调节

就如之前我们提到的,白色用RGB(255,255,255)表示,黑色用RGB(0,0,0)表示,所以如果我们需要提高图片的亮度(颜色接近白色),我们需要同时增加三个通道的数值,反之就是变暗。

在这里我们添加了一个函数参数来决定要提高多少亮度,如果参数是负数的话就是减少亮度了。在每个通道都加上delta值之后,需要做的就是让它不要低于0且不要高于255.

原图

加亮图 Delta = 30

暖色调

当我们说一一幅暖色调的图片的时候通常是因为这张图色调偏黄。我们没有黄色的通道,但是红色和绿色混合起来就是黄色,所以我们增加这两个通道值,然后蓝色通道值不变就好了。

我们使用一个delta参数来决定增加红色和绿色通道的值。一张暖色的图片能够给人一种复古效果,如果是有沙子的图片,图片将会更加生动。

[cpp] view plain copy

  1. QImage * MainWindow::warm(int delta, QImage * origin){
  2. QImage *newImage = new QImage(origin->width(), origin->height(), QImage::Format_ARGB32);
  3. QColor oldColor;
  4. int r,g,b;
  5. for(int x=0; x<newImage->width(); x++){
  6. for(int y=0; y<newImage->height(); y++){
  7. oldColor = QColor(origin->pixel(x,y));
  8. r = oldColor.red() + delta;
  9. g = oldColor.green() + delta;
  10. b = oldColor.blue();
  11. //we check if the new values are between 0 and 255
  12. r = qBound(0, r, 255);
  13. g = qBound(0, g, 255);
  14. newImage->setPixel(x,y, qRgb(r,g,b));
  15. }
  16. }
  17. return newImage;
  18. }

原图

暖色图 Delta = 30

冷色调

如果说暖色调的图片偏黄色,那么冷色调的图片应该就是偏蓝色了。在这个方法里面我们只增加蓝色通道的值,红色和绿色的值不变。

冷色调的图片可以联想到未来,死亡或者,冷。

[cpp] view plain copy

  1. QImage * MainWindow::cool(int delta, QImage * origin){
  2. QImage *newImage = new QImage(origin->width(), origin->height(), QImage::Format_ARGB32);
  3. QColor oldColor;
  4. int r,g,b;
  5. for(int x=0; x<newImage->width(); x++){
  6. for(int y=0; y<newImage->height(); y++){
  7. oldColor = QColor(origin->pixel(x,y));
  8. r = oldColor.red();
  9. g = oldColor.green();
  10. b = oldColor.blue()+delta;
  11. //we check if the new value is between 0 and 255
  12. b = qBound(0, b, 255);
  13. newImage->setPixel(x,y, qRgb(r,g,b));
  14. }
  15. }
  16. return newImage;
  17. }

原图

冷色调图 Delta = 30

饱和度

我们已经说了,颜色由三个通道组成:红,绿,蓝,尽管如此,RGB不是唯一一个表示色彩的方式,在这里,我们使用HSL格式表示色彩 - hue(色相), saturation(饱和度), lightness(明度)。

饱和的图像拥有更加生动的颜色,通常会比较好看,但是有一点要记住:不要滥用饱和度,因为很容易出现失真。

[cpp] view plain copy

  1. QImage * MainWindow::saturation(int delta, QImage * origin){
  2. QImage * newImage = new QImage(origin->width(), origin->height(), QImage::Format_ARGB32);
  3. QColor oldColor;
  4. QColor newColor;
  5. int h,s,l;
  6. for(int x=0; x<newImage->width(); x++){
  7. for(int y=0; y<newImage->height(); y++){
  8. oldColor = QColor(origin->pixel(x,y));
  9. newColor = oldColor.toHsl();
  10. h = newColor.hue();
  11. s = newColor.saturation()+delta;
  12. l = newColor.lightness();
  13. //we check if the new value is between 0 and 255
  14. s = qBound(0, s, 255);
  15. newColor.setHsl(h, s, l);
  16. newImage->setPixel(x, y, qRgb(newColor.red(), newColor.green(), newColor.blue()));
  17. }
  18. }
  19. return newImage;
  20. }

原图

饱和的图片 Delta=30

模糊

这个效果相对于之前的有一点点复杂。我们会用到一个卷积滤波器,根据当前像素的颜色和相邻像素的颜色来获得一个新的颜色。同时还有一个kernel的矩阵来决定计算中相邻像素的影响程度。

原像素会在矩阵的中心,因此我们会使用基数行的行和列。我们不会修改边缘的像素点,因为那些点没有我们需要的相邻像素点,虽然我们也可以只使用有效的像素点。

举了例子,让我们来看看如何计算像素的RGB值。下面的三个举证代表着当前像素和邻接像素的RGB值,最中间的是当前像素。

R = 20 102 99
150 200 77 
170 210 105

G = 22 33 40
17 21 33
8 15 24

B = 88 70 55
90 72 59
85 69 50

Kenel =  0 2 0
2 5 2
0 2 0

使用滤波器进行计算:

r = ( (102*2) + (150*2) + (200*5) + (77*2) + (210*2) ) / (2+2+5+2+2) = 159
g = ( (33*2) + ( 17*2) + (21*5) + (33*2) + (15*2) ) / (2+2+5+2+2) = 23
b = ( (70*2) + (90*2) + (72*5) + (59*2) + (69*2) ) / (2+2+5+2+2) = 72

由原始的RGB(200, 21, 72)得到了RGB(159, 23, 72).  发现最大的变化是红色的通道,因为红色通道的值差距最大。

在修改肖像照片的时候通常会使用到模糊的技术,它能后掩盖住皮肤的瑕疵。

[cpp] view plain copy

  1. QImage * MainWindow::blur(QImage * origin){
  2. QImage * newImage = new QImage(*origin);
  3. int kernel [5][5]= {{0,0,1,0,0},
  4. {0,1,3,1,0},
  5. {1,3,7,3,1},
  6. {0,1,3,1,0},
  7. {0,0,1,0,0}};
  8. int kernelSize = 5;
  9. int sumKernel = 27;
  10. int r,g,b;
  11. QColor color;
  12. for(int x=kernelSize/2; x<newImage->width()-(kernelSize/2); x++){
  13. for(int y=kernelSize/2; y<newImage->height()-(kernelSize/2); y++){
  14. r = 0;
  15. g = 0;
  16. b = 0;
  17. for(int i = -kernelSize/2; i<= kernelSize/2; i++){
  18. for(int j = -kernelSize/2; j<= kernelSize/2; j++){
  19. color = QColor(origin->pixel(x+i, y+j));
  20. r += color.red()*kernel[kernelSize/2+i][kernelSize/2+j];
  21. g += color.green()*kernel[kernelSize/2+i][kernelSize/2+j];
  22. b += color.blue()*kernel[kernelSize/2+i][kernelSize/2+j];
  23. }
  24. }
  25. r = qBound(0, r/sumKernel, 255);
  26. g = qBound(0, g/sumKernel, 255);
  27. b = qBound(0, b/sumKernel, 255);
  28. newImage->setPixel(x,y, qRgb(r,g,b));
  29. }
  30. }
  31. return newImage;
  32. }

原图

模糊图

锐化

像模糊中一样,锐化一张图片也会使用一个卷积滤波器,但是kernel矩阵是不一样的,相邻像素对应的值是负的。

锐化能够处理模糊的照片,能够提升细节。

[cpp] view plain copy

  1. QImage * MainWindow::sharpen(QImage * origin){
  2. QImage * newImage = new QImage(* origin);
  3. int kernel [3][3]= {{0,-1,0},
  4. {-1,5,-1},
  5. {0,-1,0}};
  6. int kernelSize = 3;
  7. int sumKernel = 1;
  8. int r,g,b;
  9. QColor color;
  10. for(int x=kernelSize/2; x<newImage->width()-(kernelSize/2); x++){
  11. for(int y=kernelSize/2; y<newImage->height()-(kernelSize/2); y++){
  12. r = 0;
  13. g = 0;
  14. b = 0;
  15. for(int i = -kernelSize/2; i<= kernelSize/2; i++){
  16. for(int j = -kernelSize/2; j<= kernelSize/2; j++){
  17. color = QColor(origin->pixel(x+i, y+j));
  18. r += color.red()*kernel[kernelSize/2+i][kernelSize/2+j];
  19. g += color.green()*kernel[kernelSize/2+i][kernelSize/2+j];
  20. b += color.blue()*kernel[kernelSize/2+i][kernelSize/2+j];
  21. }
  22. }
  23. r = qBound(0, r/sumKernel, 255);
  24. g = qBound(0, g/sumKernel, 255);
  25. b = qBound(0, b/sumKernel, 255);
  26. newImage->setPixel(x,y, qRgb(r,g,b));
  27. }
  28. }
  29. return newImage;
  30. }

原图

锐化图

添加相框

绘制一个相框是非常见到那的,我们只需要把相框在原图上面绘制就可以了。这里假设我们已经有一个和图片一样大小的相框了,不一样的话要resize到一样大。

[cpp] view plain copy

  1. QImage * MainWindow::drawFrame(QImage * origin){
  2. QImage * newImage = new QImage(* origin);
  3. QPainter painter;
  4. painter.begin(newImage);
  5. painter.drawImage(0,0, QImage(":images/frame.png"));
  6. painter.end();
  7. return newImage;
  8. }

原图

相框

添加相框之后

金属效果

这个例子中我们会结合几种技术来获得一种效果。下面是处理的步骤:

1.调整图像的亮度,获得一个较暗的图片。

2.将图像转成灰度。

3.将灰度图绘制在金属的纹理上,透明度50%。

[cpp] view plain copy

  1. QImage * MainWindow::metal(QImage * origin){
  2. QImage * newImage = new QImage(":images/metal.png");
  3. QImage * darkImage = brightness(-100, origin);
  4. QImage * greyImage = greyScale(darkImage);
  5. QPainter painter;
  6. painter.begin(newImage);
  7. painter.setOpacity(0.5);
  8. painter.drawImage(0, 0, * greyImage);
  9. painter.end();
  10. delete greyImage;
  11. delete darkImage;
  12. return newImage;
  13. }

原图

金属纹理

最终效果

模糊的边框

最后再来学习一个融合的效果,这次我们想要做的是模糊图片外延的部分,让视线的焦点聚集在图片的中间。

我们将会使用一张遮罩图片,来决定需要模糊的部分,具体的操作步骤如下:

1.从原图获取一张完全模糊的图片。

2.使用QPainter的一种融合模式,通过遮罩图片截取出一个模糊的相框。点这里可以学习到更多的QPainter的融合模式。

3.在原图上绘制出模糊的边框。

[cpp] view plain copy

  1. QImage * MainWindow::blurFrame(QImage * origin){
  2. QImage * newImage = new QImage(* origin);
  3. QImage * blurredImage = blur(newImage);
  4. QImage * mask = new QImage(":images/mask.png");
  5. QPainter painter;
  6. //Using the composition mode SourceAtop we get a blurred frame stored in QImage mask
  7. painter.begin(mask);
  8. painter.setCompositionMode(QPainter::CompositionMode_SourceAtop);
  9. painter.drawImage(0, 0, * blurredImage);
  10. painter.end();
  11. //With our new frame we simply draw it over the original image
  12. painter.begin(newImage);
  13. painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
  14. painter.drawImage(0, 0, * mask);
  15. painter.end();
  16. delete mask;
  17. delete blurredImage;
  18. return newImage;
  19. }

原图

遮罩

模糊的边框

最终效果

手机Demo

你可以下载这个手机Demo的源码,里面包含了文章中的源码,在这个应用中,包含了3张462*260的图片。测试应用的时候,你只要选择其中一张并应用下面的效果就可以了。

总结

这篇文章应该可以成为你图像处理的入门,但是一切皆有可能。你可以修改这些方法,整合这些方法,使用其他的技术等等。想象力才是你唯一的限制。

个人分类: image processing

相关热词: qimage画布  qimage拷贝  qimage类型  qimage颜色  qimage转换

上一篇基石

下一篇PCA在图像压缩和图像识别的区别

2018年Python全栈平均薪资是多少?

转型学Python如何从8K提升至20K月薪,多数高薪Python全栈需要掌握Django框架、网络爬虫Scrapy框架、Xpath、PhantomJS、BeautifulSoup、Redis存储和Docker容器技术、自动化运维、数据挖掘与机器学习…………

想对作者说点什么? 我来说一句

QImage缩放后图片更清晰处理

2219

QImage的缩放是比较常用的,今天碰到一个问题: 我发现缩放后的图片看起来很不清晰,于是看了一下QImage的scaled方法。发现它默认的是快速缩放,也就是增加scale的处理速度,牺牲的就是图片...

QImage的显示

5560

因为想利用QT的gui在arm上显示的缘故,因此开始接触了QT。最近,用QT在弄一个显示图片的小程序。程序如下: #include #include "mainwindow.h" ...

基于Qt的图像处理技术和算法 - CSDN博客

6-7

这篇文章主要阐述了如何使用Qt在像素级别上对图像进行操作,并实现了一些图像效果,这些效果主要有:灰度,模糊,锐化,添加相框,金属质感,改变图像饱和度,亮度还有白平衡。...

Qt中图像的显示与基本操作 - CSDN博客

8-1

Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示,并且利用类中...这里说下QImage和QPixmap类的用处:QImage为图像的像素级访问做了优化,QPixmap...

qt之QImage

8850

QImage::QImage()    构造一个空的QImage对象,此时返回的对象,如果调用isNULL 返回值为真 QImage::QImage(const QSize & size, Fo...

Qt之QImageReader - CSDN博客

5-29

QImage像素级操作 转自http://blog.csdn.net/silang...访问: 339万+ 积分: 3万+ 排名: 177 勋章...举报内容: Qt之QImageReader 举报原因: 色情 政治...

Qt QImage像素格式小结 - CSDN博客

6-6

Qt中QImage类封装了对于一般图像像素级的操作,图像显示则使用QPixmap。本文说说对...访问: 32万+ 积分: 4298 排名: 9140 勋章: 持之以恒 授予每个自然...

对比OpenCV, QT, ITK库对图像像素级的操作

1286

本文以常见的二维BMP图像为例,对比OpenCV, QT, ITK库对图像像素级的操作。

关于QPixmap/QImage/QPicture

9087

绘图设备是指继承QPainterDevice的子类。Qt一共提供了四个这样的类,分别是QPixmap、QBitmap、QImage和 QPicture。其中,QPixmap专门为图像在屏幕上的显示做了...

对比OpenCV, QT, ITK库对图像像素级的操作 - CSDN博客

6-3

本文以常见的二维BMP图像为例,对比OpenCV, QT, ITK库对图像像素级的操作。...//直接访问bmp图像内存, 不考虑RGB三个分量 InputImageType::IndexType ...

OpenCV中Mat数据结构的像素级访问 - CSDN博客

5-22

OpenCV 访问Mat数据顺序访问随机访问

QImage

1.3万

支持的图像格式: BMP ,GIF , JPG , JPEG, PNG, PBM, PGM, PPM, XBM, XPM //使用给定的大小和格式构造图像 QImage(const ...

【Qt开发】Qt中图像的显示与基本操作 - CSDN博客

6-26

Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放、旋转)。 1. Qt可显示的图像类型 参考Qt的帮助...

QT获取字符串的像素的宽与高 - CSDN博客

6-6

Qt 中获取字体的像素高度和宽度 最近在用Qt做文字的滚屏效果,要计算字体的像素...访问: 2万+ 积分: 549 排名: 9万+ 勋章: 持之以恒 授予每个自然...

QImage转换图片格式,并替换特定颜色像素

117

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupU...

qt Qimage动态更改图片像素例子

2018年05月08日 6KB 下载

QT 如何使图片像素变小的问题 - CSDN博客

6-6

这里主要介绍了在Qt中使图片像素变小,编程的时候,一般都是要添加图片的,但是图片有很大,对于编程人员来说,编程那是小事,要实现快速化缩小图片,就是头疼的事儿了...

QImage对一般图像的处理

6343

Qt中QImage类封装了对于一般图像像素级的操作,图像显示则使用QPixmap。 本文说说对一般图像(常见格式,图像不大)的处理,比如将彩色图像处理为灰度图像。首先要获得源图像数据,对源图像数据进...

【Qt开发】如何将内存图像数据封装成QImage V1

1885

如何将内存图像数据封装成QImage         当采用Qt开发相机数据采集软件时,势必会遇到采集内存图像并进行处理(如缩放、旋转)操作。如果能够将内存图像数据封装成QImage,则可以利用QI...

QPixmap、QBitmap、QImage 與 QPicture

2.2万

在處理影像資料上,Qt提供了QPixmap、QBitmap、QImage與QPicture等類別。 一. 几种类的简介 QPixmap繼承了QPaintDevice,您可用以建立QPaint e...

QT QImage使用方法(Qt学习1)

3286

参考链接: 1、http://blog.csdn.net/feiyangyangfei/article/details/8672748 Qt信号与槽 以及图像在label缩放显示 //mysigna...

练习一 使用QImage显示RGB图像和灰度图像

6620

QT的图像类有QImage,QPixmap,QBitmap,QPicture。 CMyWidget类头文件: #ifndef CMYWIDGET_H #define CMYWIDGET_H ...

【图像融合】简单认识图像融合

2964

简单认识图像融合,包括概念、特点、应用、基本原则以及像素级融合、特征级融合、决策级融合...

QImage

2.8万

QImage类提供了一个硬件无关的图像表示方法,该图像可以逐像素被访问和用于画图设备。 Qt提供了QImage、QPixmap、QBitmap和QPicture四种图像操作类。QImage类主要用于...

【Qt】QImage使用总结

204

图像格式转换由 RGB 格式转换成 BGR 格式QImage::rgbSwapped() 返回一个QImage,其中所有像素的红色和蓝色组件的值被交换,有效地将RGB图像转换为BGR图像。QImag...

二值化的图像转化成QImage

77

之前还做过GIGE相机的raw格式转换为OpenCV格式,一开始觉得很不好下手,但其实图像都会遵循标准的,,不要慌,仔细看文档,看清楚是什么格式后就能发现转换的办法       代码如下[cpp] v...

halcon中Image的像素类型

231

在学习halcon算子sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )时,在样例中遇到了一个操作* This exa...

Qt使用QImage裁剪图片

453

今天想搞一个放大镜的功能,首先要解决如何裁剪图片的需求,于是翻遍网络好像没有和我想法一致的需求,我是需要移动框,然后框会自动裁剪当前的图片,于是查了下文档,自己写了一个Image的裁剪功能,记录如下:...

QImage 总结

1231

图像的数据是以字节为单位保存的,每一行的字节数必须是4的整数倍,不足的补0。 (因为我们使用的是32操作系统,因此数据是按照32位对齐的,所以每行的字节数必须是4的整数倍也就是说每行的数据位必须是3...

IplImage与QImage之间相互转换的问题

2899

做Qt这么久了,一直想把IplImage与QImage之间相互转换的问题贴出来,一直没有时间,今天抽空把代码贴出来,思路很简单,只需要把数据根据两种不同格式进行复制就行了。 IplImage转QIma...

Qt中对图片中的颜色进行修改

3340

由Qimage的colorTable方法获得图片中全部的颜色,然后找到你要更换的颜色,把颜色的编号交给setColor方法就可以了,具体请看qt的文档。QImage image(":/image//i...

QT的QImage 与 Opencv的Mat 之间的转换

4773

直接上代码: cv::Mat QImageToMat(QImage image) { cv::Mat mat; switch (image.format()) { case QImage::...

QImage 图像格式小结

1451

http://tracey2076.blog.51cto.com/1623739/539690 嗯,这个QImage的问题研究好久了,有段时间没用,忘了,已经被两次问到了,突然有点解释不清楚,我...

【Qt】QImage等坐标系

1483

Qimage等均是以左上角为原点(0,0),向右向下分别延伸x与y的正半轴的。

OpenCV 学习(像素操作 Manipuating the Pixels)

3938

OpenCV 学习(像素操作 Manipuating the Pixels)OpenCV 虽然提供了许多类型的图像处理函数,可以对图像进行各种常见的处理,但是总会有些操作时没有的,这时我们就需要自己来...

QImage转化为半透明的效果

76

//将QImage转化为半透明的效果QPixmap  ChangeQImageTransparency(QString path){ QImage *img = new QImage; img-&am...

QImage图像格式

613

图像的数据是以字节为单位保存的,每一行的字节数必须是4的整数倍,不足的补0。 (因为我们使用的是32操作系统,因此数据是按照32位对齐的,所以每行的字节数必须是4的整数倍也就是说每行的数据位必须...

如何正确地在手机上显示图片——QImage与QPixmap完全解析

1180

引言 用Qt程序在手机上显示一幅图片对编程人员来说是再基础不过的一件事情了。那么先让大家看两段代码:  //dangerous should not be used, cannot d...

QImage和IplImage转换总结

1283

在arm中做图像处理,因为一般都会用到

QImage 与 cv::Mat 之间的相互转换

2.7万

最近做图像处理方面的项目比较多,很多算法自己从头写的话太浪费时间,而且自己写的也不一定完善,早就听说OpenCV在图像处理算法方面功能很强大,一直没时间学习,这次正好项目用到了,临时抱佛脚学习些Ope...

将图片QImage显示在QWidget控件上

4174

mainwindow.cpp MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new ...

OpenCV的cv::Mat转换为Qt的QImage是歪斜失真

74

1 OpenCV的cv::Mat转换为Qt的QImage是歪斜失真 2 Qt中用QLabel显示OpenCV中Mat图像数据出现扭曲现象的解决 void CenterWindow::dis...

Qt之图像处理QImage

566

1.QImage 这几天在处理gif格式的图片,目的是:将gif图片的背景设置为透明第一步,将gif的每一帧分离出来,这里偷懒了,直接度娘了一个分离工具直接分离了。 第二部,设置透明色(这个是重点...

QT三大绘图类:Qpixmap/QImage/Qpicture

2775

QPixmap QImage QPicture 以上都是QPaintDevice的子类QPixmap 依赖硬件、加速显示、适合小图片 QPixmap的设计本来就是用来加速显示,用paint绘图时用...

QImage 与Mat 转化

743

转自:http://blog.csdn.net/zyh821351004/article/details/46646735

Qt 如何使用 QImage 设置指定的颜色为透明色?

543

Qt 如何使用 QImage 设置指定的颜色为透明色?需求背景:使用华大身份证读卡器模块读取身份证信息,通过模块读取的图片为 *.BMP 格式,无透明色,故绘制到身份证上无法美观的显示。通过查询身份证...

BufferedImage 与像素级渲染

4610

常有人说Java图形渲染很慢?嗯,相对C/C++而言,Java2D固有的图像处理能力确实有待提高。 但是,这也仅仅局限于对比C/C++应用而言。 如果您是以其它什么东西与之比较,却得出Java渲染很慢...

QImage与QPixmap完全解析

1.8万

转载自http://www.civilnet.cn/bbs/browse.php?topicno=4691 用Qt程序在手机上显示一幅图片对编程人员来说是再基...

Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放、旋转)。

4882

Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放、旋转)。 1. Qt可显示的图像类型 参考Qt的帮助文档,可支持的类型...

基于实例的像素级标注介绍

427

对于机器视觉的项目,有多种标注方法可供选择。比如你可以把图片划分为不同的类别,为图片中物体画严格相切的2D框,在重要实体的角落里画点或者把给点图片中的每个单独的像素都标注出来。不同的标注方式来源于不同...

8-3 使用QImage进行高质量绘制(High-Quality Rendering with QImage

1.4万

在进行绘图时,我们经常要面对速度和效率两者之间矛盾。在X11和MacOsX系统上,在QWidget和QPixmap绘图要依赖平台自身的绘图引擎。在X11上,与X server的通信很少,Qt只是发送...

Java像素级的操作

651

Java像素级的操作

图片的像素级处理

837

可以通过使用TBitmapUtil类的一些方法对位图进行像素级的处理。包括:void Begin(const TPoint& aPosition):设置当前要处理的像素位置,并锁定堆。void End...

QT图像处理示例,包括QImage的处理。

2011年07月01日 283KB 下载

QImage创建合成的图片(一张图片堆叠在另一张图片上)

2359

用QImage创建合成的图片

全卷积网络:从图像级理解到像素级理解

3778

2016-05-09 赵凯 深度学习大讲堂 点击上方“公众号”可订阅哦!深度学习大讲堂致力于推送人工智能,深度学习方面的最新技术,产品以及活动。 卷积神经网络(CNN):图像级语义理解的利器    ...

QImage与QPixmap加载图片效果 【两者的区别】

2949

QImage与QPixmap加载图片 效果 . 分类: QT开发 qtQtQT PixmapTest::PixmapTest(QWidget *parent) : QDial...

使用QImage进行高质量绘制(High-Quality Rendering with QImage

1527

分类: C++ GUI Programming with Qt 4 (59) 在进行绘图时,我们经常要面对速度和效率两者之间矛盾。在X11和MacOsX系统上,在QWidget和QPixmap绘图...

将指定文字写入QImage中并保存成图片

4193

在实际项目中,我们往往想让指定的文字连接成一个整体,不让用户对显示的文字进行拆分复制等操作,只进行显示,也就是说,我们想让部分字符串以原子的形式显示给用户,例如,在即时通讯软件中,我们在群里@一个人是...

没有更多推荐了,返回首页

个人资料

youngyang_sjtu

关注

原创

2

粉丝

2

喜欢

2

评论

0

等级:

访问:

925

积分:

33

排名:

199万+

最新文章

  • PCA在图像压缩和图像识别的区别
  • 基石

个人分类

  • Qt1篇
  • image processing2篇

归档

  • 2018年3月3篇

热门文章

  • QImage像素级操作

    阅读量:742

  • PCA在图像压缩和图像识别的区别

    阅读量:153

  • 基石

    阅读量:18

联系我们

请扫描二维码联系客服

webmaster@csdn.net

400-660-0108

QQ客服 客服论坛

关于招聘广告服务 网站地图

©2018 CSDN版权所有 京ICP证09002463号

百度提供支持

经营性网站备案信息

网络110报警服务

中国互联网举报中心

北京互联网违法和不良信息举报中心

  • 「码字计划」:拿万元写作基金!
  • Python薪资多少?

登录

注册

QImage 图像处理相关推荐

  1. opencv将图像处理之后显示在label上(Mat转化为qimage)转换之后label显示全黑

    opencv将图像处理之后显示在label上(Mat转化为qimage)转换之后label显示全黑 1.本实验要完成的功能:利用opencv将原图像灰度处理,然后显示在label上 2.图像处理程序: ...

  2. opencv QImage与Mat 互转 及简单的图像处理

    opencv(mat与qimage 的互转)及简单的图像处理 一.opencv库文件 二.使用方式(Qt) 三.QImage 转 Mat (不太全,多多指教) 四.Mat转 QImage 五.一些简单 ...

  3. 图像处理 QImage

    在Qt中有四种处理图像的方法: QImage  :使用I/O ,可以对像素进行处理 QPixmap:主要用在屏幕的显示 QBitmap: QPixmap的子类,处理颜色深度,只能显示黑白两种颜色,用于 ...

  4. opencv图像处理总结

    opencv图像处理基本操作 1. 矩阵数据类型 通用矩阵数据类型: CV_<bit_depth>(S|U|F)C<number_of_channels> 其中,S表示带符号整 ...

  5. Qt中的图像处理与绘制

    文章目录 1 图像处理与绘制 1.1 QImage和QPixImage 1.2 简单图像处理 1.3 屏幕截图 1 图像处理与绘制 1.1 QImage和QPixImage 设备无关图像类-QImag ...

  6. (3两个例子)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述 http://www.cnblogs.com/jsxyhelu/p/7907241.html 2环境架设 http://www ...

  7. QImage 与 cv::Mat 之间的相互转换

    近期做图像处理方面的项目比較多,非常多算法自己从头写的话太浪费时间,并且自己写的也不一定完好,早就听说OpenCV在图像处理算法方面功能非常强大,一直没时间学习,这次正好项目用到了.暂时抱佛脚学习些O ...

  8. Qt:OpenCV—Q图像处理基本操作(Code)

    原文链接:http://www.cnblogs.com/emouse/archive/2013/03/31/2991333.html 作者写作一系列:http://www.cnblogs.com/em ...

  9. QT实现图像处理-傅立叶变换、傅立叶反变换、平滑、锐化与模板匹配

    From: http://www.cnblogs.com/qytan36/archive/2010/04/04/1704226.html 实验环境: 1,Linux操作系统 2,QT3编程开发环境 3 ...

  10. pyqt5 获取Qlabel中的图片并对其进行处理(包括Qimage转换为Mat)

    1.提取Qlabel中的图片 qimg=self.showScreenImgLabel.pixmap().toImage() 2.将Qimage转换为mat def qimage2mat(self,q ...

最新文章

  1. Redis为什么变慢了?常见延迟问题定位与分析
  2. intel 汇编中断解释
  3. 辣眼睛:程序员这样过儿童节
  4. 1.使用sizeof计算类的大小
  5. 超链接js点击后页面向上滚动问题解决
  6. (lucas) Saving Beans
  7. 「雕爷学编程」Arduino动手做(24)——水位传感器模块
  8. Vue深入学习4—指令和生命周期
  9. OPPO K9s官宣:5000mAh超大电量 充电功率阉割明显
  10. elk替代_Golang-logrus简单的日志收集系统(替代ELKB)
  11. 项目文档说明前端部分怎么写?写进readme.md文件里面。
  12. python中的utils模块_Python中的模块及扩展库
  13. CAD怎么转化成PDF?手机就可以轻松解决
  14. Matplotlib坐标轴范围
  15. 【IVIF:特征聚合网络】
  16. 计算机函数vlookup套用,vlookup函数应用实例(一)
  17. 盗墓笔记《云顶天宫》好不好看?当贝投影F3画面还原度如何?
  18. 软件功能测试报告都包含哪些内容,测试报告如何获取呢
  19. 泛型中的类型擦除和桥方法
  20. Python手册(Python Basics)--Python进阶

热门文章

  1. 金蝶k3服务器维护,金蝶k3问题处理-完整版.docx
  2. 游戏王怪兽胶囊Android,游戏王怪兽胶囊GB是什么?
  3. 中国电子教育产业前景规划与未来投资方向预测报告2022年版
  4. vcredist_x86.exe 静默安装方法
  5. Linux的PDF工具,Linux 系统中的pdf阅读器以及工具
  6. 新版标准日本语初级_第二课
  7. react入门教程案例井字棋(包含改进代码)
  8. 淘晶驰串口屏常见问题及解决方法
  9. 12306数据库遭泄露,请尽快修改密码
  10. Python 人脸表情识别