使用OpenCV獲取二進制圖像中白色像素數量的最快方法是什麼?有沒有比使用兩個for循環和逐像素訪問圖像更快的東西?使用OpenCV獲取二進制圖像中白色像素數量的最快方法
回答
最簡潔的方式來完成,這是:
cv::Mat image, mask; //image is CV_8UC1
cv::inRange(image, 255, 255, mask);
int count = cv::countNonZero(mask);
如果你是一個二進制圖像上進行操作,然後調用cv::inRange()
是不必要的,只是cv::countNonZero()
就足夠了。
雖然任何方法都必須迭代所有像素,但這可能能夠利用OpenCV的內置parallel_for_()
,這允許並行執行。
如果圖像是連續的,則可以使用單個循環遍歷所有數據。
謝謝,cv :: inRange就是我想要的!我實際上是通過EmguCV封裝(使用C#)來使用OpenCV,而這一行使我的程序加速了大約40%。你有什麼想法爲什麼循環兩個for循環是如此慢? – xx77aBs
我對C#不是很熟悉,但我相信它在循環中迭代時會檢查邊界,這可以解釋一些性能差異。 – Aurelius
謝謝,邊界檢查實際上是在放慢速度。但是,在禁用邊界檢查之後的事件中,對於非常大的圖片(10240x7680),CV函數需要大約70ms,而兩個for循環大約需要350ms。在使用Parallel.For之後,兩個循環方法花費了大約200ms,但是OpenCV實現的時間仍然長得多。 – xx77aBs
- 1. 在opencv二進制圖像中計數'白色'像素(高效)
- 2. OpenCV二進制圖像只得到白色像素不工作
- 3. 獲取白色像素座標(OpenCV)
- 4. 在opencv中讀取二進制圖像的像素值
- 5. Python - 獲取圖像的白色像素
- 6. 在Python或C++中獲取像素顏色的最快方法?
- 7. 從二進制圖像獲取灰度圖像的像素值
- 8. iOS性能調整:獲取大圖像像素顏色的最快方法
- 9. OpenCV - 二進制圖像中所有非零像素的位置
- 10. 使用opencv/Numpy在python中查找彩色圖像中的白色像素
- 11. 如何使用直方圖獲取白色像素強度?
- 12. 用於OpenCV的二進制圖像
- 13. 如何用MATLAB計算二值圖像中的白色像素數量?
- 14. 使用OpenCV在圖像中獲取最常見的顏色
- 15. 獲取圖像色彩模式的最快方法
- 16. 查找白色/黑色像素數在二值圖像
- 17. opencv將二進制圖像的像素值寫入文件
- 18. 使用OpenCV 3.0將顏色矩陣應用於RGB圖像的最快方法?
- 19. 如何使用opencv檢測大量白色像素的區域?
- 20. 關於通過分析二進制前景圖像的白色像素進行車輛計數的想法
- 21. OpenCV - 如何獲取視頻中白色像素的最後位置?
- 22. 獲取像素顏色最快的方式?
- 23. 用於C++圖像分析的OpenCV二進制圖像蒙版
- 24. 獲取二進制圖像的最主要顏色。它是黑色還是白色?
- 25. 提取.pgm圖像中顏色位的最快方法?
- 26. Python OpenCV - 在二進制圖像中查找黑色區域
- 27. OpenCV的分組白色像素
- 28. 從圖像中獲取像素顏色
- 29. Java - 二進制圖像像素索引
- 30. 使用openCV去除二進制圖像中的噪聲
圖像是真正的灰度,還是二值圖像? – Aurelius
@Aurelius:它實際上是二進制圖像,我應該在問題中寫下它。 – xx77aBs