opencv中mat基本用法:
mat類 (matrix的縮寫) 是opencv用於處理影象而引入的乙個封裝類。從功能上講,mat類在iplimage結構的基礎上進一步增強,並且,由於引入c++高階程式設計特性,mat類的擴充套件性大大提高。
mat image(240, 320, cv8uc3);第乙個引數是rows,該矩陣的行數;第二個引數是cols,該矩陣的列數;第三個引數是該矩陣元素的型別。這句話表示建立乙個大小為240×320的矩陣,裡面的元素為8位unsigned型,通道數(channel)有3個。
mat::zeros(3, 3, cv32f) + 5;定義個3×3的32bit浮點數矩陣,元素全為0,再將所有元素加上5.0。
c++中vector的at函式:
假設v是乙個vector物件,通常v.at(n)和v[n]是一樣的,前者會檢查是否越界(因此花費的時間稍多),而後者不會(後者越界會導致未定義行為)。
c++優化之使用emplace:
在c++開發過程中,我們經常會用stl的各種容器,比如vector,map,set等,這些容器極大的方便了我們的開發。在使用這些容器的過程中,我們會大量用到的操作就是插入操作,比如vector的push_back,map的insert,set的insert。這些插入操作會涉及到兩次構造,首先是物件的初始化構造,接著在插入的時候會複製一次,會觸發拷貝構造。但是很多時候我們並不需要兩次構造帶來效率的浪費,如果可以在插入的時候直接構造,就只需要構造一次就夠了。
c++11標準已經有這樣的語法可以直接使用了,那就是emplace。vector有兩個函式可以使用:emplace,emplace_back。emplace類似insert,emplace_back類似push_back。
opencv的連通域處理函式:
在影象處理過程中,經常會遇到這樣一部分影象,影象的整體部分如果人來看的話一眼就能看出,但是它的內部由於有各種小缺口,導致斷開了,這樣在計算機「眼」裡就被認為是斷開的,為了使影象達到適應人眼的感覺,需要將這些缺口和斷開的口給連線上去,這就需要用到計算機圖形學中的連通域處理技術。給出乙個簡單的連通域處理函式,這個函式是來自opencv著名教程learning opencv中。
這個連通域處理函式的形式:
void connectedcomponents(mat &mask_process, int poly1_hull0, float perimscale, int number = 0, rect &bounding_box = rect(), point &contour_centers = point(-1, -1));
引數mask表示的是需要進行連通域處理二值影象。
引數poly1_hull0表示輪廓邊緣是否採用多邊形擬合,如果該引數為1,則表示採用多邊形擬合,否則採用凸包擬合。
引數perimscale是用來將那些小的輪廓去掉,那些小的輪廓時指它的周長小於(mask長+寬)/perimscale。當然你在其內部**也可以該為面積來判斷。
引數num表示實際需要處理最多的輪廓的個數(如果輸入的mask有多個輪廓的話),這裡的處理是指計算出這些輪廓的外接矩形和中心點。預設值為0,表示函式內部不需要處理這些外接矩形和中心點。
引數bbs表示的是處理完後對應輪廓的外接矩形,預設值為rect(),表示不需要返回這些外接矩形。
引數centers表示處理完後對應輪廓的中心點座標,預設值為point(-1, -1),表示不需要返回這些中心點。
c++ memset()函式:
memset 函式是記憶體賦值函式,用來給某一塊記憶體空間進行賦值的;
包含在標頭檔案中,可以用它對一片記憶體空間逐字節進行初始化;
原型為 :
void *memset(void *s, int v, size_t n);
這裡s可以是陣列名,也可以是指向某一內在空間的指標;
v為要填充的值;
n為要填充的位元組數;
C 零散學習1
c 零散學習1 結構體 與c語言相似 struct position 宣告和訪問 position enemyposition enemyposition.x 10 物件名.結構體成員變數名 foreach遍歷陣列 foreach int temp in 陣列名 引數陣列與陣列引數 修飾符 型別名 ...
程式設計技巧的零散學習
1 不使用if switch及其他判斷語句如何找出兩個int型變數中的最大值和最小值?int max a b abs a b 2 intmin a b abs a b 2 2 比較運算子 運算順序是從左往右,賦值運算子運算順序從右向左 3 如何使用一條語句實現x是否為2的若干次冪的判斷?如果乙個數為...
Spring 零散總結
1.beanfactory和factorybean的區別 參考自 例如 最常見的factorybean,用於產生回話的工廠 分析 普通bean beanfactory 可存放的物件型別 工廠bean 可產生bean的bean 偽 案例 a 普通bean 相比於工廠bean b 工廠bean 可生產 ...