2017-10-13 44 views
0

我查找了一些關於使用OpenCV訪問C++中的像素值的教程。對於修改每個像素值的示例,使用.ptr比使用更快。我意識到如何計算賦值的新值也會影響您的性能,但我不知道使用.ptr是否總是快於。在?如何使用OpenCV在C++中快速訪問像素值

即使我所做的是比較像素與其相鄰像素?

我在寫代碼,以找出是否一個像素爲最大/最小圍繞其8相鄰像素等18個像素來自兩個不同的高斯模糊(不同西格瑪)的圖像。 (是的,SIFT)我目前使用.AT訪問像素值,我可以告訴代碼需要一些時間來運行(曲子有很多圖片都需要經過同樣的過程)。我想知道是否使用.ptr會使性能更好。

+0

添加到@bachinblack的答案,儘量避免手動像素操作,而是嘗試儘可能多地使用OpenCV的本機函數。這些功能都經過高度優化。但是如果你有*來處理像素數據,你可以使用parallel_for來加速你的代碼,當然,前提是你的算法可以並行化。 – zindarod

回答

3

documentation指針方法是在每種情況下最快。其他方法只是比較安全。 它也說,.at()方法是最耗時的,這應該解釋您的表現不足

+3

沒有必要用最後一句話來回應你的回答,文檔確實說出你寫的是什麼。同樣,你的意見不需要在指針和迭代器上 - 再一次,庫中的文檔具體指明瞭,所以它不是* only *你的意見:)。很好的回答,歡迎來到Stack!儘管我建議使用[更新的OpenCV版本文檔]鏈接(https://docs.opencv.org/3.3.0/db/da5/tutorial_how_to_scan_images.html)。 –