OpenCV 應用場景筆記

2021-08-21 04:54:22 字數 2472 閱讀 6890

有道是:好記性不如爛筆頭。記下經驗,更重要的是記下踩過的坑

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;

注意括號不能丟

移步這裡

影象經常需要在bgrhsvgrayhls等色彩空間內相互轉換,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

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.

千萬要注意,此處的 dst_size 是 (fx, fy), 尤其是和常用的 (rows, cols) 是相反的。不能搞混。

插值選項:

Redis應用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...

Redis應用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...

Redis應用場景

閱讀 31,232 次 毫無疑問,redis 開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。希望你喜歡這個比喻。下面是一篇新鮮出爐的文章,其作者是re...