上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

上位机图像处理和嵌入式模块部署(qt图像处理)

guduadmin291月前

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        很多人一想到图像处理,本能的第一反应就是opencv,这也没有错。但是呢,这里面还是有一个问题的,不知道大家有没有想过,如果我们为了降低成本,需要把图像放到mcu来处理,这个时候应该怎么做呢?都知道,mcu的ram和flash都是有限的,根本无法容纳那么大的opencv库。所以,这边还是建议大家,opencv是可以用,但是基础的算法库最好还是可以自己写出来。

        对于写算法的人来说,最麻烦的事情,莫过于图片的读取和保存了,算法本身一般并不是那么复杂。所以这部分好在qt已经帮我们做了一部分,我们直接拿QImage类就可以实现基础的算法编写了。

1、相关类

        qt里面的QImage十分方便,输入路径,就是实现图片的保存和加载。

2、参考代码

        如下面代码所示,这就是一个简单的图像处理代码,将原来的彩色图片,变成了灰色图片。整个应用没有界面,就是一个单纯的应用。所有的操作都放在了processImage函数里面。

#include 
#include 
void processImage(QString inputPath, QString outputPath) 
{
	// load image
	QImage inputImage(inputPath);
	if (inputImage.isNull()) 
	{
		qDebug() << "Failed to load image";
		return;
	}
	// get image infor
	int width = inputImage.width();
	int height = inputImage.height();
	// loop to process pixel
	for (int y = 0; y < height; ++y) 
	{
		for (int x = 0; x < width; ++x) 
		{
			QRgb pixel = inputImage.pixel(x, y);
			// get data
			int red = qRed(pixel);
			int green = qGreen(pixel);
			int blue = qBlue(pixel);
			// get gray
			int gray = qGray(red, green, blue);
			// set gray
			inputImage.setPixel(x, y, qRgb(gray, gray, gray));
		}
	}
	// save data
	if (!inputImage.save(outputPath)) 
	{
		qDebug() << "Failed to save processed image";
	}
}
int main() 
{
	// set input and output path
	QString inputPath = "D:/lena.png";
	QString outputPath = "D:/lena_new.png";
	// process image
	processImage(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盘看到生成的新图片,打开看一下,如果发现是灰度图,那基本代表没有什么问题了。

上位机图像处理和嵌入式模块部署(qt图像处理),第1张

网友评论

搜索
最新文章
热门文章
热门标签
 
 梦见猫什么预兆  梦见买房子是什么意思  中年人梦见回学校读书