首先介紹setto()函式
opencv3.3中給出的庫函式中是這樣介紹setto()函式的:
第乙個引數可以將給定矩陣的值轉變為特定的value值;
第二個引數就是mask掩膜矩陣,可分為新增mask和不新增mask這兩種情況,其中,給定矩陣和掩膜矩陣的尺寸大小要相同。
下面,通過例項來具體說明mask的用法。
一.新增mask的效果
首先,通過創造初始矩陣和3個不同的掩膜矩陣,來分析新增掩膜的作用:
mat src,mask1,mask2,mask3,dst1,dst2,dst3;
/*建立初始矩陣*/
src=mat(3,3,cv_8uc1,scalar(5));
cout<
/*建立3個掩膜矩陣*/
mask1=mat(3,3,cv_8uc1,scalar(0));
mask2=(mat_(3,3)<<1,0,0,2,0,7,1,1,3);
mask3=mat::ones(3,3,cv_8uc1);
cout<
建立的3個掩膜矩陣分別為全零矩陣,個別元素為零的矩陣和元素全為非零的矩陣。
下面通過利用setto()函式轉變初始矩陣各元素的值,設value的值為100:
/*加上mask引數*/
dst1=src.setto(100,mask1);
cout<
比較轉變後的矩陣和掩膜矩陣,可以輕鬆的發現:在掩膜矩陣中,有0元素時,該位置上對應的元矩陣元素的值不會發生改變;而不為0的位置上,原矩陣的值全部變為了設定的value(100)。所以,我給掩膜的定義為:通過在矩陣各位置設定0來掩蓋給定矩陣對應元素的值,使之不發生改變。
二.不新增mask的效果
分別對全零和全為非零的矩陣進行setto()函式轉變。
/*不加mask引數*/
mask1.setto(100);
cout<
可以發現,當沒有掩膜mask的時候,不論給定矩陣的個元素值是否為零,經過setto()變換後,矩陣個元素的值都變成了value(100)。
例項源**如下:
#include 「opencv2/highgui/highgui.hpp」
#include 「opencv2/imgproc/imgproc.hpp」
#include
#include
using namespace std;
using namespace cv;
int main()
{mat src,mask1,mask2,mask3,dst1,dst2,dst3;
/*建立初始矩陣*/
src=mat(3,3,cv_8uc1,scalar(5));
cout<
mask3=mat::ones(3,3,cv_8uc1);
cout<
dst1=src.setto(100,mask1);
cout<
cout<
cout<
mask1.setto(100);
cout<
cout<
return 0;
Maskedit的掩碼含義及用法
maskedit的掩碼含義及用法 maskedit是用來建立編輯框的,但它與edit編輯框可以輸入任意字元不同,maskedit可以限制使用者只能按照既定的輸入格式輸入。掩碼編輯框 maskedit 是一種特殊的編輯框。使用它可以設計出許多複雜的輸入格式。在選用maskedit之後,需要為它設計乙個...
oracle格式掩碼
to char 是把日期或數字轉換為字串 to date 是把字串轉換為資料庫中得日期型別 轉換函式 to char 使用to char函式處理數字 to char number,格式 to char salary,99,999.99 使用to char函式處理日期 to char date,格式 ...
使用者掩碼umask
在linux中,每個使用者都有乙個使用者掩碼umask,每個使用者建立的檔案的預設許可權就於這個umask有關。如果乙個使用者的umask是0022 root使用者的預設umask值 那麼這個使用者建立的目錄的預設許可權為 0777減去0022後的結果,即0755 第乙個0表示強制位和冒險位 如果建...