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