QT实现从电脑文件夹读取两张图片文件,实现两张灰度图相减,差值大于阈值报警
时间: 2024-05-09 13:21:38 浏览: 140
下面是一个简单的示例程序,可以实现从电脑文件夹读取两张图片文件,实现两张灰度图相减,差值大于阈值报警:
```cpp
#include <QCoreApplication>
#include <QDebug>
#include <QImage>
#include <QFile>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 读取图片文件
QString file1 = "image1.png";
QString file2 = "image2.png";
QImage image1(file1);
QImage image2(file2);
if (image1.isNull() || image2.isNull()) {
qDebug() << "Failed to open image files";
return -1;
}
// 转换为灰度图
QImage grayImage1 = image1.convertToFormat(QImage::Format_Grayscale8);
QImage grayImage2 = image2.convertToFormat(QImage::Format_Grayscale8);
// 计算差值
int threshold = 20;
int diffSum = 0;
for (int y = 0; y < grayImage1.height(); y++) {
for (int x = 0; x < grayImage1.width(); x++) {
int diff = qAbs(grayImage1.pixelIndex(x, y) - grayImage2.pixelIndex(x, y));
diffSum += diff;
}
}
// 判断是否报警
if (diffSum > threshold) {
qDebug() << "ALARM!";
} else {
qDebug() << "No alarm";
}
return a.exec();
}
```
在上面的示例程序中,我们首先使用 `QImage` 类读取了两张图片文件,并将它们转换为灰度图。然后,我们计算了两张灰度图的差值,并判断是否报警。具体实现过程中,我们使用了 `pixelIndex()` 函数来获取每个像素的灰度值,并使用 `qAbs()` 函数计算差值的绝对值。最后,我们将差值累加起来,与阈值进行比较来判断是否报警。
阅读全文