如何使用 ImageMagick API 在 C++ 中比较图像?
How to use the ImageMagick API to compare images in C++?
如何做相当于命令行的操作
compare bag_frame1.gif bag_frame2.gif compare.gif
在 C++ 中使用 Magick++ API?我想在 C++ 代码中比较或查找相同尺寸的两个图像的相似性,而不是使用命令行。
任何示例代码片段将不胜感激。
我想你在这里有答案:http://www.imagemagick.org/discourse-server/viewtopic.php?t=25191
图像存储在 Image class which has a compare
member function. The first link 中有一个关于如何使用它的示例,图像文档有一个关于如何使用的很好的示例 Image
。
我相信 Magick::Image.compare
是您正在寻找的方法。您的应用程序可以使用三种方法签名。
- Bool 判断是否有差异。
- 双倍 基于公制的失真量。
- 图像 作为新的突出显示图像的结果差异。
例如...
#include <Magick++.h>
int main(int argc, const char * argv[]) {
Magick::InitializeMagick(argv[0]);
Magick::Geometry canvas(150, 150);
Magick::Color white("white");
Magick::Image first(canvas, white);
first.read("PATTERN:FISHSCALES");
Magick::Image second(canvas, white);
second.read("PATTERN:GRAY70");
// Bool to evaluate if there's a difference.
bool isIdentical = first.compare(second);
// Double distortion amount based on metric.
double metricDistortion = first.compare(second, Magick::AbsoluteErrorMetric);
// Image resulting difference as a new highlight image.
double distortion = 0.0;
Magick::Image result = first.compare(second, Magick::AbsoluteErrorMetric, &distortion);
return 0;
}
第三个例子是满足命令行需要的方法
compare bag_frame1.gif bag_frame2.gif compare.gif
如何做相当于命令行的操作
compare bag_frame1.gif bag_frame2.gif compare.gif
在 C++ 中使用 Magick++ API?我想在 C++ 代码中比较或查找相同尺寸的两个图像的相似性,而不是使用命令行。
任何示例代码片段将不胜感激。
我想你在这里有答案:http://www.imagemagick.org/discourse-server/viewtopic.php?t=25191
图像存储在 Image class which has a compare
member function. The first link 中有一个关于如何使用它的示例,图像文档有一个关于如何使用的很好的示例 Image
。
我相信 Magick::Image.compare
是您正在寻找的方法。您的应用程序可以使用三种方法签名。
- Bool 判断是否有差异。
- 双倍 基于公制的失真量。
- 图像 作为新的突出显示图像的结果差异。
例如...
#include <Magick++.h>
int main(int argc, const char * argv[]) {
Magick::InitializeMagick(argv[0]);
Magick::Geometry canvas(150, 150);
Magick::Color white("white");
Magick::Image first(canvas, white);
first.read("PATTERN:FISHSCALES");
Magick::Image second(canvas, white);
second.read("PATTERN:GRAY70");
// Bool to evaluate if there's a difference.
bool isIdentical = first.compare(second);
// Double distortion amount based on metric.
double metricDistortion = first.compare(second, Magick::AbsoluteErrorMetric);
// Image resulting difference as a new highlight image.
double distortion = 0.0;
Magick::Image result = first.compare(second, Magick::AbsoluteErrorMetric, &distortion);
return 0;
}
第三个例子是满足命令行需要的方法
compare bag_frame1.gif bag_frame2.gif compare.gif