C++图像处理,粒子计数

标签 c++ algorithm image-processing

我想计算图像中的粒子数。 我发现 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

看起来像这样:

enter image description here

然后,当您运行该程序时,它会用递增的数字标记每个 Blob (即矩形),即每个 Blob 都比上一个亮一些。

enter image description here

关于C++图像处理,粒子计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40722202/

相关文章:

algorithm - 一次读取、处理和写入一行是否高效?

algorithm - 175(175-253)如何用2的补码法减去253?

Python 递归回溯数独求解器

C++ 无效赋值

c++ - OpenCV - 查找或访问未被 bg 包围的形状轮廓,仅由轮廓分隔

c++ - C++ 和 lua 初学者游戏开发

ubuntu - ImageMagick 在两个不同的系统上转换不同的结果

matlab - 在Matlab中,如何扫描与实际坐标系旋转45度的二维坐标系中的二值图像?

image-processing - 图像处理和计算机视觉必读?

c++ - 清除 Bison 生成的解析器的解析器状态