delphj11 delphi-opencv img对比 代码
时间: 2023-07-24 13:10:18 浏览: 182
以下是 Delphi 和 OpenCV 中用于图像对比的示例代码:
Delphi 示例代码:
```delphi
uses
// 导入 OpenCV 库
cvTypes, cvUtils, cvHighgui, cvImgProc;
// 创建一个函数来比较两个图像
function CompareImages(const FileName1, FileName2: string): Boolean;
var
Img1, Img2, Diff: pCvMat;
begin
// 读取两个图像
Img1 := cvLoadImageM(PAnsiChar(AnsiString(FileName1)), CV_LOAD_IMAGE_GRAYSCALE);
Img2 := cvLoadImageM(PAnsiChar(AnsiString(FileName2)), CV_LOAD_IMAGE_GRAYSCALE);
try
// 创建一个差异图像
Diff := cvCreateMat(Img1.rows, Img1.cols, CV_8UC1);
// 计算两个图像之间的差异
cvAbsDiff(Img1, Img2, Diff);
// 计算差异图像的像素平均值
Result := cvAvg(Diff).val[0] = 0;
finally
// 释放内存
cvReleaseMat(Img1);
cvReleaseMat(Img2);
cvReleaseMat(Diff);
end;
end;
```
OpenCV 示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
// 创建一个函数来比较两个图像
bool compareImages(const string& fileName1, const string& fileName2)
{
// 读取两个图像
Mat img1 = imread(fileName1, IMREAD_GRAYSCALE);
Mat img2 = imread(fileName2, IMREAD_GRAYSCALE);
// 创建一个差异图像
Mat diff;
absdiff(img1, img2, diff);
// 计算差异图像的像素平均值
Scalar avgDiff = mean(diff);
return avgDiff.val[0] == 0;
}
int main()
{
// 调用函数来比较两个图像
bool isSame = compareImages("test1.jpg", "test2.jpg");
if (isSame)
cout << "The images are the same." << endl;
else
cout << "The images are different." << endl;
return 0;
}
```
这些代码演示了如何比较两个图像是否相同,但是 Delphi 代码使用的是 Pascal 语言,而 OpenCV 代码则使用的是 C++ 语言。如果您需要更具体的比较,请提供更多信息,我会尽力回答。
阅读全文