opencv
cximage
cimg
freeimage
opencv中vc庫的版本與visual studio版本的對應關係:
vc8 —> 2005
vc9 —> 2008
vc10 —> 2010
vc11 —> 2012
vc12 —> 2013
vc14 —> 2015
vc15 —> 2017
visual studio中的輔助工具
image watch:c++除錯時可以視覺化檢視記憶體狀態的乙個輔助工具。
1、常用建構函式
mat()
mat(int rows, int cols, int type)
mat(size size, int type)
mat(int rows, int cols, int type, const scalar& s)
mat(size size, int type, const scalar& s)
mat(const mat& m)
mat(int rows, int cols, int type, void* data, size_t step = auto_step)
mat(size size, int type, void* data, size_t step = auto_step)
mat(const mat& m, const range& rowrange, const range& colrange)
mat(const mat&m, const rect& roi)
2、opencv 淺拷貝與深拷貝淺拷貝:
在 mat 中提取 roi 或者直接複製屬於淺拷貝。
淺拷貝只拷貝矩陣頭,儲存資料的記憶體空間是共享的,在新生成的 mat 物件中,資料指標指向被拷貝的 mat 物件的記憶體位址。
深拷貝:
深拷貝不僅重新生成矩陣頭(包含矩陣尺寸,儲存方法,儲存位址等資訊),而且重新開闢了一塊記憶體空間來儲存矩陣資料,用乙個指標來指向該位址。
m1.copyto(mat& m2)
m2 = m1.clone()
3、生成特殊的矩陣
mat m = mat::zeros(int rows, int cols, int type) //生成全0矩陣
mat m = mat::ones(int rows, int cols, int type) //生成全1矩陣
mat m = mat::eye(int rows, int cols, int type) //生成對角陣
4、畫素值讀寫通過 .at<>(i, j) 進行讀寫
for (int i = 0; i < rows; ++i)
}
通過迭代器進行讀寫
mat iterator_grayit, grayend; // 如果是彩色圖,只需要將 uchar 改為 vec3b
for (grayit = grayim.begin(), grayend = grayim.end();
grayit != grayim; ++grayit)
通過指標進行讀寫
mat 中有乙個 *data 指標,指向儲存的資料的首位址。
for (int i = 0; i < rows; ++i)
使用 step 的方式進行讀寫
使用 mat_ 類
mat_ 類是對 mat 類的乙個包裝,定義如下:
templateclass mat_ : public mat
使用 mat_ 類之後可以直接使用元素的下標進行讀寫:
mat_m1 = (mat_&)m;
for (int i = 0; i < m1.rows; ++i)
手冊:
教程:doc/tutorials/tutorials.html
高階:
計算機視覺
主講老師 曹洋 課程 視覺 基礎 底 層處理 影象處理 特徵提 取 中 層處理 影象分割 相機標 定 深度 估計 運 動估計 高層處 理 3d 重建 目 標識別 視 覺基 礎 底層 處理 圖 像處理 特徵提取 中層 處理 圖 像分割 相機標定 深度估 計 運動 估計 高層處理 3d重 建 目標 識別...
計算機視覺
眾所周知,計算機不認識影象,只認識數字。為了使計算機能夠 理解 影象,從而具有真正意義上的 視覺 本章我們將研究如何從影象中提取有用的資料或資訊,得到影象的 非影象 的表示或描述,如數值 向量和符號等。這一過程就是特徵提取,而提取出來的這些 非影象 的表示或描述就是特徵。有了這些數值或向量形式的特徵...
漫談計算機視覺
從輸入圖象到資訊獲取之間存在著巨大的認知空白,其間需要經過一系列十分複雜的資訊處理和理解過程。想象一下,在火車站,我們可以從茫茫人群中精確地找出要迎接的夥伴,這遠非現在的機器學習 搜尋引擎所能解決的。這再次證明人類視覺系統的強大。對人類視覺過程本質的認識,乃是揭開機器視覺進步的關鍵。對計算機而言,所...