我最近開始使用C++和opencv進行圖像處理。自從開始幾乎每個示例代碼都使用了namespace std;在標題中。在閱讀完它後,我發現建議不要使用名稱空間,因爲當兩個庫具有相同的函數名稱時,它可能會導致問題。所以我決定不再使用命名空間,但現在應該何時添加std ::或cv ::?
所以我改變它,並使用cv ::和std ::每當我得到一個錯誤,但仍然有函數從opencv沒有錯誤我假設這是因爲只有一個函數與該名稱。但是我應該爲每個函數添加標識符,即使這不會導致錯誤?
例如
cv::Mat antif;
idft(complexI, antif);
split(antif, planes);
magnitude(planes[0], planes[1], antif);
normalize(antif, antif, 0, 1, cv::NORM_MINMAX);
我測量使用傅立葉變換的兩個圖像之間的相位差。 我必須添加cv ::製作變量antif時。但opencv中包含的以下任何函數都不會彈出錯誤消息。
這是因爲這個問題只有一個實例,或者我應該添加cv ::只是爲了習慣這樣做?
是一致的。要麼使用命名空間標準; cv或std :: cv ::在名稱空間中的每個標識符之前。 –
編寫代碼,以便人們可以輕鬆理解。對我來說,這意味着命名空間限定了所有的功能,因爲我很快就會看到它們屬於哪個庫。 –
一般來說,在''cpp''模塊中使用'namespace''語句是很好的。它將它們放在頭文件中,這是一個真正的禁忌。你也可以在你的''cpp''中使用''''''''''使用cv :: Mat;'''來做東西,然後在你的源代碼中保存'Mat''。 –