我想计算图像中的粒子数。 我发现 ImageJ 完全符合我的需要 http://imagej.net/Particle_Analysis但它是 Java,而且它只是我需要集成的功能之一,因此从我的 C++ 应用程序调用 Java 程序毫无值(value)。 我正在寻找实现此功能的 C++ 库,非常欢迎任何综合算法。 一切顺利
最佳答案
我认为 CImg 对您来说是一个很好的解决方案 - 它是 here .它是单个 C++ 头文件 - 没有库或任何要链接的东西,它几乎可以在任何平台上运行 - Linux、OS X、Windows。
您需要的函数是label()
。这是一个简短的例子:
#include <iostream>
#include "CImg.h"
using namespace std;
using namespace cimg_library;
int main(int argc, char** const argv)
{
CImg<int> img("input.png");
img.label(0,0);
img.save_png("result.png");
}
我在命令行用 ImageMagick 制作了一个测试图像:
convert -size 1000x1000 xc:black -fill white \
-draw "rectangle 10,10 50,50" \
-draw "rectangle 100,200 300,400" \
-draw "rectangle 800,25 900,900" input.png
看起来像这样:
然后,当您运行该程序时,它会用递增的数字标记每个 Blob (即矩形),即每个 Blob 都比上一个亮一些。
关于C++图像处理,粒子计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40722202/