opencv訪問元素的幾種方法

2021-08-09 23:50:51 字數 1336 閱讀 6002

今天剛看了乙個公開課,學到了更多的訪問畫素的方法。

1、借助at<>()模板函式訪問畫素

2、借助迭代器訪問

3、借助ptr<>()函式訪問

4、借助mat物件的step陣列屬性進行訪問(不推薦容易越界)

// op_pixels.cpp: 採用四種方法訪問畫素

//#include "stdafx.h"

#include#include#include#includeusing namespace std;

using namespace cv;

int main()

} endtime = clock();

cout << "使用at()方法所花費的時間為:" << (double)(endtime - starttime) / clocks_per_sec << "秒" << endl;

imshow("at方法生成的圓", m);

//採用迭代器的方式來訪問,由於沒有i,j因此沒有畫圓,只是做了一些簡單的變換

starttime = clock();

rng rng; //opencv提供的乙個生成隨機數的類

mat_::iterator itbegin, itend;

for (itbegin = n.begin(), itend = n.end(); itbegin != itend; itbegin++)

endtime = clock();

cout << "使用迭代器方法所花費的時間為:" << (double)(endtime - starttime) / clocks_per_sec << "秒" << endl;

imshow("迭代器訪問生成的圖", n);

//採用c陣列風格訪問影象元素,這部分也是畫乙個圓

starttime = clock();

for (int i = 0; i < rownum; i++)

}} endtime = clock();

cout << "使用類似c陣列方法所花費的時間為:" << (double)(endtime - starttime) / clocks_per_sec << "秒" << endl;

imshow("採用c陣列風格訪問影象生成的圓", l);

//採用指標計算方式進行訪問,但是不推薦用這種方式,很容易會越界產生錯誤

for(int i=0;i

執行結果截圖如下:令我意外的是使用迭代器時間反而比使用at<>()方法時間還要長

獲取元素的幾種方法

document.getelementbyid id document.getelementbytagname 標籤名 document.getelementbyclassname classname 獲取父節點,元素物件.parentnode 獲取子元素,元素物件.children 獲取下乙個兄弟...

JQ插入元素的幾種方法

jquery prepend 方法 p prepend hellow world jquery prepend 在被選中元素的 開始 位置插入內容 jquery prependto 方法 hello world prependto p jquery prependto 方法 hello world ...

DOM獲取元素的幾種方法

dom根據id獲取元素 var div document.getelementbyid main console.log div 獲取到的資料型別 htmldivelement,物件都是有型別的 htmldivelement htmlelement element node eventtarget ...