Image editing techniques and algorithms using Qt
费了好半天劲先翻译这一点。还有好多地方不明白。先弄明白这一点。继续以后的翻译。
这一篇文章我们将讨论不同的技术和算法来修改图像使用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的更多相关文章
- (转) [it-ebooks]电子书列表
[it-ebooks]电子书列表 [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...
- (转)Awesome Courses
Awesome Courses Introduction There is a lot of hidden treasure lying within university pages scatte ...
- 斯坦福CS课程列表
http://exploredegrees.stanford.edu/coursedescriptions/cs/ CS 101. Introduction to Computing Principl ...
- PR视屏剪切
一款常用的视频编辑软件,由Adobe公司推出.现在常用的有CS4.CS5.CS6.CC.CC 2014及CC 2015版本.是一款编辑画面质量比较好的软件,有较好的兼容性,且可以与Adobe公司推出的 ...
- 【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 ...
- Fast-paced Multiplayer
http://www.gabrielgambetta.com/fpm1.html —————————————————————————————————————————————————————— Fast ...
- (转) 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 ...
- Paper | 多任务学习的鼻祖
目录 1. MTL的定义 2. MTL的机制 2.1. Representation Bias 2.2. Uncorrelated Tasks May Help? 3. MTL的用途 3.1. Usi ...
- aes加密/解密(转载)
这篇文章是转载的康奈尔大学ece5760课程里边的一个final project,讲的比较通俗易懂,所以转载过来.附件里边是工程文件,需要注意一点,在用modelsim仿真过程中会出现错误,提示非法引 ...
随机推荐
- 960 grid 分析
960 网格系统的构造如下:页面总宽度 960px12 栏布局, 每栏 60px每栏两边保留 10px 的外边距, 相当于 20px 的槽内容区域总宽度是 940px 960 布局无疑是非常好的网格系 ...
- perl 正则命名捕获
#!/usr/bin/perl -w =pod 命名捕获--给匹配上的内容加上标签 捕获到的内容都会保存在%+散列中,这个散列的key为对应的标签: 方便之处就是利于程序扩展和阅读,不用繁琐的一个一个 ...
- java的几个版本以及jre,jdk等概念——【转载】JDK、Java SE、Java EE、Java ME我该选
我们平时使用的一些软件,有一部分需要Java环境的支持,但是SUN那么多的产品,让人眼花缭乱的版本号,前看后看都差不多的缩写,让我们选择起来的时候常常望而却步,只好跟着感觉走.所以下面我要介绍的就是那 ...
- POJ——字符串插入
2:字符串插入 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3.( ...
- android入门——数据存储
首先是SharedPreferences 用户偏好 package com.example.wkp.aboutdata; import android.content.Intent; import a ...
- 关于nvarchar与varchar的区别
varchar(x), nvarchar(x)这里面的x指的是最大的列宽 如果存储的字符串没达到最大列宽 那么他也只获得对应的列宽的存储空间 并不意味着系统就会给它分配x的空间给它 varch ...
- C++虚函数在内存中的实现
首先来一张图,一目了然: 然后把相应的代码贴上来: class A { int a; public: virtual void f(); virtual void g(int); virtual vo ...
- Linux学习之traceroute命令
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一 ...
- Python进阶之自定义排序函数sorted()
sorted() .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB",& ...
- JS输出当前时间,且每秒变化
<div id="timer"></div> <script type="text/javascript"> window. ...