OpenCV計算機視覺程式設計攻略 全書總結

2021-08-28 11:14:54 字數 3681 閱讀 9791

cv::mat imageroi(image,

cv::rect(image.cols-logo.cols, //roi座標

image.rows-logo.rows,

logo.cols,logo.rows)); //roi大小

logo.copyto(imageroi); //插入標誌

cv::mat imageroi(image,

cv::range(image.rows-logo.rows, logo.rows) //roi行範圍

cv::range(image.rows-logo.rows, logo.rows)); //roi列範圍

logo.copyto(imageroi); //插入標誌

uchar *data = image.data;

data += image.step; //從一行移到下一行

cv::mat_::iterator it_begin =

image.begin(); //獲得起始位置

cv::mat_::iterator it_end =

image.end(); //獲得結束位置

const int64 start = cv::gettickcount();

function(); //呼叫的函式

double duration = (cv::gettickcount()-start) / //經過的時間(s)

cv::gettickfrequency()

結果表明:`mat::at(row,col)\[n]方法應該在需要隨機訪問資料的時候使用`,絕不要在掃瞄影象時使用,速度比較慢。

void sharpen2d(const cv::mat& image, cv::mat& result)
// c[i] = a[i] + b[i]

cv::add(imagea, imageb, resultc);

// c[i] = a[i] + k

cv::add(imagea, cv::scalar(k), resultc);

// c[i] = k1*a[i] + k2*b[i] + k3

cv::addweighted(imagea, k1, imageb, k2, k3, resultc);

// c[i] = k*a[i] + b[i]

cv::scaleadd(imagea, k, imageb, resultc);

// 計算適合跟蹤的特徵

std::vectorcorners;

cv::goodfeaturestotrack(image, // 輸入影象

corners, // 角點影象

500, // 返回角點的最大數量

0.01, // 質量等級

10); // 角點之間允許的最短距離

// keypoint型別的向量

std::vectorkeypoints;

// 適合跟蹤的特徵檢測器的建構函式

cv::ptrgftt=

new cv::goodfeaturestotrackdetector(

500, // 返回角點的最大數量

0.01, // 質量等級

10); // 興趣點之間允許的最短距離

// 用featuredetector方法檢測興趣點

gftt->detect(image,keypoints);

// 關鍵點的向量

std::vectorkeypoints;

// fast特徵檢測器的建構函式

cv::pt***st=

new cv::fastfeaturedetector(

40); // 檢測用的閾值

// 檢測特徵點

fast->detect(image,keypoints);

cv::fast(image, // 輸入影象

keypoints, // 輸出關鍵點的向量

40, // 閾值

false); // 是否進行非最大值抑制?

cv::dynamicadaptedfeaturedetector fastd(

new cv::fastadjuster(40), // 特徵檢測器

150, // 特徵的最小數量

200, // 特徵的最大數量

50); // 最大迭代次數

fastd.detect(image,keypoints); // 檢測特徵點

cv::gridadaptedfeaturedetector fastg(

new cv::fastfeaturedetector(10), // 特徵檢測器

1200, // 關鍵點總數的最大值

5, // 網格的行數

2); // 網格的列數

fastg.detect(image,keypoints);

cv::pyramidadaptedfeaturedetector fastp(

new cv::fastfeaturedetector(60), // 特徵檢測器

3); // 金字塔的層數

fastp.detect(image,keypoints);

// surf特徵檢測器的建構函式

cv::ptrdetector =

new cv::surf(2000.); // 閾值

// 檢測surf特徵

detector->detect(image,keypoints);

// 構造sift特徵檢測器物件

detector = new cv::sift();

// 檢測sift特徵

detector->detect(image,keypoints);

// 構造brisk特徵檢測器物件

detector = new cv::brisk();

// 檢測brisk特徵

detector->detect(image,keypoints);

// 構造orb特徵檢測器物件

detector = new cv::orb(200, // 關鍵點的總數

1.2, // 圖層之間的縮放因子

8); // 金字塔的圖層數量

// 檢測orb特徵

detector->detect(image,keypoints);

《opencv計算機視覺攻略》筆記 一

1.mat 定義的是物件的引用 2.namedwindow char mat 生成的視窗按照名稱標識 3.需要waitkey 0 不然無法顯示影象 4.cv flip image,result,1 正數水平 0垂直翻轉 負數水平和垂直 5.rgb影象是三通道 由3個unsigned char組成 灰...

OpenCV計算機視覺程式設計攻略(第二章)部分沒看完

我們將建立乙個簡單的函式,用它在影象中加入椒鹽雜訊 void salt cv mat image,int n else if image.type cv 8uc3 操作畫素 if image.type cv 8uc1 else if image.type cv 8uc3 opencv 為這樣的短向量...

OpenCV 計算機視覺庫

opencv是乙個由因特爾公司支援的開源機器視覺庫,關於它的介紹,網上隨便一搜就車載斗量。這裡我不談視覺庫的主要內容,而是將這段時間來對它的使用心得作個簡單介紹,以啟發打算用這個庫的朋友的思路,與大家一起來分享。在學校的時候,雖然是影象處理研究方向,但真正具體的應用到影象的很多東西,還是在參加工作以...