旅游网站建设功能意义,搭建网站难吗,网站 域名解析出错,百度指数排行榜哪里看【 声明#xff1a;版权所有#xff0c;欢迎转载#xff0c;请勿用于商业用途。 联系信箱#xff1a;feixiaoxing 163.com】 很多人一想到图像处理#xff0c;本能的第一反应就是opencv#xff0c;这也没有错。但是呢#xff0c;这里面还是有一个问题的#xff0c;不知…【 声明版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】 很多人一想到图像处理本能的第一反应就是opencv这也没有错。但是呢这里面还是有一个问题的不知道大家有没有想过如果我们为了降低成本需要把图像放到mcu来处理这个时候应该怎么做呢都知道mcu的ram和flash都是有限的根本无法容纳那么大的opencv库。所以这边还是建议大家opencv是可以用但是基础的算法库最好还是可以自己写出来。 对于写算法的人来说最麻烦的事情莫过于图片的读取和保存了算法本身一般并不是那么复杂。所以这部分好在qt已经帮我们做了一部分我们直接拿QImage类就可以实现基础的算法编写了。 1、相关类 qt里面的QImage十分方便输入路径就是实现图片的保存和加载。 2、参考代码 如下面代码所示这就是一个简单的图像处理代码将原来的彩色图片变成了灰色图片。整个应用没有界面就是一个单纯的应用。所有的操作都放在了processImage函数里面。
#include QImage
#include QDebugvoid processImage(QString inputPath, QString outputPath)
{// load imageQImage inputImage(inputPath);if (inputImage.isNull()) {qDebug() Failed to load image;return;}// get image inforint width inputImage.width();int height inputImage.height();// loop to process pixelfor (int y 0; y height; y) {for (int x 0; x width; x) {QRgb pixel inputImage.pixel(x, y);// get dataint red qRed(pixel);int green qGreen(pixel);int blue qBlue(pixel);// get grayint gray qGray(red, green, blue);// set grayinputImage.setPixel(x, y, qRgb(gray, gray, gray));}}// save dataif (!inputImage.save(outputPath)) {qDebug() Failed to save processed image;}
}int main()
{// set input and output pathQString inputPath D:/lena.png;QString outputPath D:/lena_new.png;// process imageprocessImage(inputPath, outputPath);return 0;
} 代码中因为还涉及到调试的部分所以除了QImage之外还需要把QDebug头文件包括进来。首先用QImage导入路径判断是否为空不为空则继续处理。接着获取图片的宽度和高度依次获取图片的每个像素QRgb。读取到r、g、b之后就可以通过qGray计算出对应的灰度值gray这样最基本的算法就写好了。计算出来的gray通过setPixel保存在inputImage当中并且在所有操作都完成之后save到新的路径下面这样图像处理就算是ok了。 3、实验和总结 记得读书的时候有一门《数字图像处理》的课程。老师们为了方便同学们快速学习算法很多图片的加载和读取工作老师们会自己写一个动态库帮忙完成。现在有了QImage之后无疑是更方便了。对于基础的算法大家还是最好自己可以写出来、调试出来。 对于这个应用大家先看一下能不能编译出来。编译出来之后还要准备一张lena.png的图片可以从这个地方下载
https://github.com/mikolalysenko/lena/blob/master/lena.png 接着启动应用开始单步调试如果没啥问题应该就可以在D盘看到生成的新图片打开看一下如果发现是灰度图那基本代表没有什么问题了。