我想計算圖像中的粒子數量。 我發現ImageJ正是在做我所需要的http://imagej.net/Particle_Analysis,但它是Java,它只是我需要集成的一個功能,使得從我的C++應用程序中調用Java程序毫無價值。 我正在尋找一個實現這個的C++庫,任何全面的算法都是值得歡迎的。 全部最好C++圖像處理,計數粒子
0
A
回答
1
看看openCV http://opencv.org/。它們具有與計算機視覺相關的大量功能和算法。根據圖像中粒子的形狀和結構,SimpleBlobDetector()可能不是有用的。這裏有一個很好的教程:https://www.learnopencv.com/blob-detection-using-opencv-python-c/。
另外你可以嘗試實現自己的算法?搜索高斯內核的拉普拉斯算子。如果你的粒子是不規則的形狀,它可能變得更加困難,需要閾值和控制。
+0
感謝您的反饋,是的圖像來自太空圖像。每次我想到OpenCV時,我都會考慮它的大小,它會在數年內變得巨大。 SimpleBlobDetector看起來是我正在尋找的,非常感謝你。當然,原始圖像需要一些清理(去除不規則背景,增加對比度等)。 –
1
我認爲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最後。
相關問題
- 1. 處理粒子
- 2. 處理粒子精靈
- 3. 用倒數計時器處理殺死粒子系統
- 4. C++圖像處理
- 5. 圖像後的粒子
- 6. 計劃圖像處理
- 7. 在libgdx中更改粒子效果的粒子圖像java
- 8. C#圖像處理:圖像相似性
- 9. C#AForge.Net圖像處理圖像
- 10. C++的圖像處理庫
- 11. c#圖像座標處理
- 12. 用C處理圖像#
- 13. C++中的圖像處理
- 14. 用C++處理DICOM圖像
- 15. 圖像處理在c#,.淨
- 16. Objective C圖像處理
- 17. C++圖像處理循環
- 18. C#3D圖像處理
- 19. C中的圖像處理#
- 20. iPhone Objective-C圖像處理
- 21. C++中的圖像處理
- 22. ASP.NET C#處理圖像
- 23. c中的圖像處理#
- 24. 2D粒子引擎無法處理超過450個粒子。爲什麼? (XNA)
- 25. 將粒子分割成黑白圖像
- 26. 光油:識別粒子圖像緩存
- 27. 通過圖像掩蓋創建粒子
- 28. C++/Java/C#圖像處理庫
- 29. OpenCV:圖像處理,目標C/C++
- 30. C++中的位圖圖像處理
我的回答或任何其他問題是否解決了您的問題?如果是這樣,請考慮接受它作爲您的答案 - 通過點擊投票計數旁邊的空心綠色勾號/複選標記。如果沒有,請說出什麼不起作用,以便我或其他人可以進一步幫助您。謝謝。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –