OpenCV (iOS)基本繪圖(5)

函數(shù)介紹

Point可定義2D點

Scalar表示了具有4個元素的數(shù)組。在OpenCV中被大量用于傳遞像素值。

line繪制直線

ellipse繪制橢圓

rectangle繪制矩形

circle繪制圓

fillPoly繪制填充多邊形

Point

次數(shù)結(jié)構(gòu)表示了由其圖像坐標x和y指定2D點,可表示為:

cv::Point pt;//此處必須使用cv::Point, 就算在引入頭文件下方加入了using namespace cv;也不行

pt.x = 10;

pt.y = 10;

或者是

cv::Point point= cv::Point(8,10);

Scalar

表示了具有四個元素的數(shù)組。此類型在OpenCV中被大量用于傳遞像素值,第四個參數(shù)可以忽略

Scalar(r, g, b);

RGB顏色值就為: Red = r; Green = g; Blue = b;

(OpenCV默認顏色值與RGB相反 ----> BGR,但是在OC上已經(jīng)被改為RGB)


創(chuàng)建一個空的全黑像素的空圖像

Mat bamboo_dragonfly_image= Mat::zeros(w, w, CV_8SC3);

Line

cv::Point pLine1 = cv::Point(10,400);// 起始點

cv::Point pLine2 = cv::Point(300,400);// 終點

int line_thickness = 2;// 線粗

int line_lineType = 8;// 線形

//? ? cv::line(bamboo_dragonfly_image, pLine1, pLine2, Scalar(100,0,255));

cv:: line(bamboo_dragonfly_image,// 同理這里首先得創(chuàng)建一個 Mat 空圖像

? ? ? ? ? ? pLine1,// 起始點

? ? ? ? ? ? pLine2,// 終點

? ? ? ? ? ? Scalar(100,0,255),// 顏色

? ? ? ? ? line_thickness,// 線粗

? ? ? ? ? line_lineType,// 線形

? ? ? ? ? ?0);

ellipse

cv::Point p1 = cv::Point(100,250);

cv::Size s1 = cv::Size(80,30);

cv::ellipse(bamboo_dragonfly_image, p1, s1,

0, 0, 360,

Scalar(255,255,0), -1,

LINE_8,? 0);

ellipse的參數(shù)

? ? ? ? ? ? ellipse(InputOutputArray img, ? ? ?// 我們創(chuàng)建的 Mat 空圖像(表示將圓加到圖像上面)

? ? ? ? ? ? ?Point center,// 橢圓圓心所在坐標

? ? ? ? ? ? ?Size axes,// 橢圓的 “長軸” 和 “短軸”

? ? ? ? ? ? ? ?double angle,// 橢圓旋轉(zhuǎn)角度

? ? ? ? ? ? ? ? double startAngle,// 橢圓擴展的弧度 開始

? ? ? ? ? ? ? ?double ? ?endAngle,// 橢圓擴展的弧度 結(jié)束 (通過控制這里的兩個Angle,可以繪制弧線)

? ? ? ? ? ? ? ? const Scalar &color,// 橢圓顏色

? ? ? ? ? ? ? ? ?int thickness =1,// 線粗(-1將被填充)

? ? ? ? ? ? ? ? ? int lineType = LINE_8,// 線形

? ? ? ? ? ? ? ? ? int shift =0// 上述橢圓中代碼省略了該參數(shù))

rectangle

int rectangle_thickness = -1;

int rectangle_lineType = 8;

cv::Point p1 = cv::Point(100,250);

cv::Point p3 = cv::Point(280,300);

cv::rectangle(bamboo_dragonfly_image, p1, p3, Scalar(0,255,255),rectangle_thickness,rectangle_lineType);

rectangle的參數(shù)

rectangle(InputOutputArray img,// 我們創(chuàng)建的 Mat 空圖像(表示將圓加到圖像上面)

? ? ? ? ? ? ?Point pt1,// 起始點(我取的是矩形左上角的點)

? ? ? ? ? ? ? Point pt2,// 終點(我取的是右下角的點)這里兩個點(起始點,終點)取矩形對角的形勢,確定對角,便確定了矩形的長寬。

? ? ? ? ? ? ? ?const Scalar &color,// 顏色

? ? ? ? ? ? ? ?int thickness =1,//? 線粗(-1將被填充)

? ? ? ? ? ? ? ? int lineType = LINE_8,// 線形

? ? ? ? ? ? ? ? ?int shift =0)// 上述矩形代碼中省略了該參數(shù)

circle

int circle_thickness = -1;

int circle_lineType = 8;

double w = 50;

cv::Point point = cv::Point(100,100);

cv::circle(bamboo_dragonfly_image, point, w,Scalar(0,0,255),circle_thickness,circle_lineType);

circle的參數(shù)

circle(InputOutputArray img,// 我們創(chuàng)建的 Mat 空圖像(表示將圓加到圖像上面)

? ? ? ? ?Point center,// 圓心所在坐標

? ? ? ? ?int radius,// 圓的半徑

? ? ? ? ?const Scalar& color,// 圓的顏色

? ? ? ? int thickness =1,// 線粗(-1將被填充)

? ? ? ? ? int lineType = LINE_8,// 線形

? ? ? ? ? int shift =0// 我也不知道干啥的,可省略)

fillPoly

繪制三角形

/** 創(chuàng)建三角形三個頂點 用矩陣的形式創(chuàng)建 */

cv::Point rook_points[1][3];

rook_points[0][0] = cv::Point(100,400);

rook_points[0][1] = cv::Point(50,450);

rook_points[0][2] = cv::Point(150,450);

/** 創(chuàng)建三角形頂點集合 */

const cv::Point* ppt[1] = {rook_points[0]};

/** 三角形頂點數(shù)目 */

int npt[] = {3};

cv::fillPoly(bamboo_dragonfly_image, // 將三角形放到圖像上

? ? ? ? ? ? ? ? ? ppt,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //三角形頂點集合

? ? ? ? ? ? ? ? ? npt,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 三角形頂點數(shù)量

? ? ? ? ? ? ? ? ? 1,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 繪制的數(shù)量

? ? ? ? ? ? ? ? ? ? Scalar(255,0,255));? ? // 三角形填充顏色

最后 我們需將 Mat 圖像轉(zhuǎn)換成 UIImage 對象

imagView1.image = MatToUIImage(bamboo_dragonfly_image);

實現(xiàn)的效果


參考博客

OpenCV for iOS 學(xué)習(xí)筆記(四)—— 基本繪圖

基本繪圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內(nèi)容