有道是:好記性不如爛筆頭。記下經驗,更重要的是記下踩過的坑
mat imread(const string& filename, int flags=1 )
這裡的flags預設是1,引數可能取值為
注意,讀取彩圖的時候,可以簡寫成mat img=imread(path)
, 但是讀取灰度圖的時候必須寫全mat img=imread(path, 0)
。否則,不會報錯,但會自動改變資料型別
直接使用 mat 的建構函式
// create color background
mat colorbackground = mat(rows, cols, cv_8uc3, scalar(0,0,0));
// create gray background
mat graybackground = mat(rows, cols, cv_8uc1, scalar(0));
注意背景顏色的取值。
在 opencv 中矩陣是行儲存的, size 是 先定位 rows 後定位 cols 的,這與 matlab 列儲存是相反的。
讀取的時候,都是按照約定俗稱的,先 row 後 col 的。
比如建立乙個 3x3 的 homography
mat h = (mat_(3, 3) << 1, 2, 3, 4, 5, 6, 7, 8, 9);
cout << "h = " << h << endl;
注意括號不能丟
移步這裡
影象經常需要在bgr
,hsv
,gray
,hls
等色彩空間內相互轉換,opencv 提供統一的操作函式:
void cvtcolor( inputarray src, outputarray dst, int code, int dstcn = 0 )
常用的 code
兩點確定一條直線,y = kx + b, 引數對 (k,b) 正好也可以用乙個 point2f 表示。
point2f calckb(point2f & pta, point2f & ptb)
return param;
}
注意,在用直線分割區域的時候,對於任意點 (x,y)需要根據diff = (kx +b -y)
的正負來判斷此點在直線的左邊還是右邊。因為影象的 xy 座標系與平面直角座標系相比,x 軸同向,y軸反向,所以判斷起來是相反的。
(void) src.copyto(dst(roi));
point2f center = point2f(x,y);
//draw line
line(image, pta, ptb, scalar(0, 0, 255));
//draw circle
circle(image,center,radius,scalar(0, 0, 255));
// put text
puttext(image, string, center, font_hershey_plain, 1, scalar(0, 255, 255));
more details about puttext
if(image.channels() == 3) // bgr color
if(image.channels() == 1) // grayscale
resize千萬要注意,此處的 dst_size 是 (fx, fy), 尤其是和常用的 (rows, cols) 是相反的。不能搞混。resizes an image.
c++: void resize(inputarray src, outputarray dst, size dsize, double fx=0, double fy=0, int interpolation=inter_linear )¶
python: cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst
parameters:
src – input image.
dst – output image; it has the size dsize (when it is non-zero) or the size computed from src.size(), fx, and fy; the type of dst is the same as of src.
插值選項:
Redis應用場景
redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...
Redis應用場景
redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...
Redis應用場景
閱讀 31,232 次 毫無疑問,redis 開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。希望你喜歡這個比喻。下面是一篇新鮮出爐的文章,其作者是re...