费了好半天劲先翻译这一点。还有好多地方不明白。先弄明白这一点。继续以后的翻译。

这一篇文章我们将讨论不同的技术和算法来修改图像使用Qt.但是在这之前我们继续你必须知道一些原则处理图片。

这里主要有两种类代表一个图片在qt, QImage 和QPixmap;我们还可以使用QBitmap来处理单色图片。和QPicture 和QPainter绘图命令。

当我们画图片在一个屏幕上时QPixmap我们建议使用。因为他是很快速地一种方式去画图片,QPixmap的问题是我们不能用单个像素去读它和修改它

QImage 是最快比QPixmap 在IO操作和给我们去访问单个像素信息。这个类,我们将在本文中编辑图片。

如果你管理大图片,喜欢用相机拍照。建议使用更精简的图来展示在屏幕上。除非我们想让用户来变焦这个图片。这有两种方式来导处图片从一个文件和缩小它。

导入一张图片用QImage 或者QPixmap 和调整后;

QImage image("sample.png");
image = image.scaled(width, height);---这里的width和height你可以换成缩放后的数值。

使用QImageReader 设置目标尺寸之后导入图片进一Qimage.QImageReader不能加载一个QPximap但是很容易创建一个QPximap从一个来自己QIage用一个静态的方法。

QPximap::fromImage(QImage img).这个方法是最快的和你不需要内存必须加载完整

大小图片。

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

每一个图像是由像素,每个像素是由3个颜色通道:红、绿、蓝、和一个alpha通道,包含透明度值(JPG和其他图像格式不支持透明)。这些渠道有0到255之间的值和黑色颜色形成当这些3颜色通道0而白色是代表当的值是2553通道。来表示一种颜色在本文中,我们将把它作为RGB(红、绿、蓝)被红色、绿色和蓝色的价值3通道。

QImage * MainWindow::greyScale(QImage * origin){
    QImage * newImage =new QImage(origin->width(), origin->height(), QImage::Format_ARGB32);
 
    QRgb * line;
 
    for(int y =; y<newImage->height(); y++){
        QRgb * line =(QRgb *)origin->scanLine(y);
 
        for(int x =; x<newImage->width(); x++){
            int average =(qRed(line[x])+ qGreen(line[x])+ qRed(line[x]))/;
            newImage->setPixel(x,y, qRgb(average, average, average));
        }
 
    }
 
    return newImage;}

Image editing techniques and algorithms using Qt的更多相关文章

  1. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

  2. (转)Awesome Courses

    Awesome Courses  Introduction There is a lot of hidden treasure lying within university pages scatte ...

  3. 斯坦福CS课程列表

    http://exploredegrees.stanford.edu/coursedescriptions/cs/ CS 101. Introduction to Computing Principl ...

  4. PR视屏剪切

    一款常用的视频编辑软件,由Adobe公司推出.现在常用的有CS4.CS5.CS6.CC.CC 2014及CC 2015版本.是一款编辑画面质量比较好的软件,有较好的兼容性,且可以与Adobe公司推出的 ...

  5. 【Repost】A Practical Intro to Data Science

    Are you a interested in taking a course with us? Learn about our programs or contact us at hello@zip ...

  6. Fast-paced Multiplayer

    http://www.gabrielgambetta.com/fpm1.html —————————————————————————————————————————————————————— Fast ...

  7. (转) Using the latest advancements in AI to predict stock market movements

    Using the latest advancements in AI to predict stock market movements 2019-01-13 21:31:18 This blog ...

  8. Paper | 多任务学习的鼻祖

    目录 1. MTL的定义 2. MTL的机制 2.1. Representation Bias 2.2. Uncorrelated Tasks May Help? 3. MTL的用途 3.1. Usi ...

  9. aes加密/解密(转载)

    这篇文章是转载的康奈尔大学ece5760课程里边的一个final project,讲的比较通俗易懂,所以转载过来.附件里边是工程文件,需要注意一点,在用modelsim仿真过程中会出现错误,提示非法引 ...

随机推荐

  1. NetworkManager——Linux强大的网络管理工具

    NetworkManager服务:NetworkManager - Linux Networking made Easy NetworkManager简介:NetworkManager由一个管理系统网 ...

  2. 在表单(input)中id和name的区别

    但是name在以下用途是不能替代的:1. 表单(form)的控件名,提交的数据都用控件的name而不是id来控制.因为有许多name会同时对应多个控件,比如checkbox和radio,而id必须是全 ...

  3. android-Java SoftReference,WeakReference,Direct Reference简介

    主要部分: SoftReference(软引用)是java中一个用来实现缓存内容的类.通过此类,可以观察某对象什么时候会被垃圾收集的执行绪清除.被 Soft Reference 指到的对象,即使没有任 ...

  4. tempo 2.0 学习记录

    最近在做项目时使用了tempo,感觉还不错,但是发现网上对于tempo 2.0 的介绍比较少,我也是在GitHub才找到了比较完整的使用说明,我也简单记录一下自己的使用过程,重新学习一下tempo 2 ...

  5. 如何在同一系统里同时启动多个Tomcat

    需要在同一系统里启动多个tomcat,应该怎么处理? tomcat是个服务程序,需要占用几个通讯端口,所以默认情况是不能启动多个tomcat,如果要启动多个tomcat,需要修改配置文件,通过在配置文 ...

  6. linux ssh 不用密码自动登录的几种方法

    1. 自动ssh/scp方法== A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A上运 ...

  7. ubuntu连接无线网

    我的ubuntu是因为没有安装无线网卡驱动,首先查看网卡型号 但是我在Broadcom官网上没有找到BCM43142的驱动. 通过谷歌后发现通过安装bcwl-kernel-source来解决这个问题, ...

  8. ubuntu KDE/GNOME vnc

  9. 全国计算机等级考试二级教程-C语言程序设计_第7章_函数

    函数执行,从右到左执行 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> main() ...

  10. bind新发现

    function foo(a,b){ this.val = a+b; } var bar = foo.bind(null, 'p1'); var baz = new bar('p2'); consol ...