一、opencv 常用庫(
opencv_core
opencv_improc
opencv_highgui
opencv_features2d
opencv_calib3d(calibration+3d)
opencv_video
opencv_objdetect
opencv_stitching
opencv_ml
opencv_contrib
opencv_flann
opencv_nonfree
二、基本資料結構
(1)point
成員函式x,y,z
typedef point2i point;typedef point_point2f;typedef point_point2d;
typedef point3_point3i;typedef point3_point3f;typedef point3_point3d;
point a(20,30);
point b;
b.x=20;
b.y=30;
(2)mat
淺拷貝:指向同一記憶體
mat a;
mat img;
a=img;
mat b(img);
深拷貝:單獨開闢記憶體空間
mat img;
mat a,b;
a=img.clone();//不管什麼都重新申請空間
img.copyto(b);//沒指定空間,則重新申請
mat c=img.col(1);
img.col(0).copyto(c)//前面已經指定空間,則不必申請
(3)size、rect
size成員函式:width,height
rect成員函式:x,y,width,height
size a(20,30);
size b;
b.width=20;
b.height=30;
(4)scalar
emplate class for a 4-element vector derived from vec.
scalar bgr(b,g,r);//省略透明通道
三、linux下基本執行
linux終端執行
g++ test_opencv.cpp -o test_opencv `pkg-config --cflags --libs opencv`
./test_opencv
使用makefile檔案
//makefile-opencv
include = $(shell pkg-config --cflags opencv)
libs = $(shell pkg-config --libs opencv)
sources = test_opencv.cpp
objects = $(sources:.cpp=.o) #$:申明變數,objects為中間型別,.cpp=.o意思是替換
target = test_opencv #可執行檔案
$(target):$(objects) #:意思是依賴於,並且可以自動推導(由.o檔案推導出.c,即可以不寫.c檔案)
g++ -o $(target) $(objects) -i $(include) $(libs)
$(objects):$(sources)
.phony:clean #偽目標,防止執行make clean 檔名與clean重名
clean:
-rm $(objects) $(target) #-表示即使有部分錯誤也執行
#%.o:%.cpp # %意思是匹配0或若干字元
# g++ -i $(include) -o $@ -c $< #@表示目前規則中所有目標的集合 《表示所有依賴項
四:example
/*
* * cvout_sample just demonstrates the serial out capabilities of cv::mat
* that is, cv::mat m(...); cout << m; now works.
* */
#include "opencv2/core.hpp"
#include using namespace std;
using namespace cv;
static void help()
int main(int argc, char** argv)
");//命令列解析,名稱及簡稱|預設值|幫助資訊
if (parser.has("help"))
mat i = mat::eye(4, 4, cv_64f);
i.at(1,1) = cv_pi;
cout << "i = \n" << i << ";" << endl << endl;
mat r = mat(10, 3, cv_8uc3);
randu(r, scalar::all(0), scalar::all(255));
cout << "r (default) = \n" << r << ";" << endl << endl;
cout << "r (matlab) = \n" << format(r, formatter::fmt_matlab) << ";" << endl << endl;
cout << "r (python) = \n" << format(r, formatter::fmt_python) << ";" << endl << endl;
cout << "r (numpy) = \n" << format(r, formatter::fmt_numpy) << ";" << endl << endl;
cout << "r (csv) = \n" << format(r, formatter::fmt_csv) << ";" << endl << endl;
cout << "r (c) = \n" << format(r, formatter::fmt_c) << ";" << endl << endl;
point2f p(5, 1);
cout << "p = " << p << ";" << endl;
point3f p3f(2, 6, 7);
cout << "p3f = " << p3f << ";" << endl;
vectorv;
v.push_back(1);
v.push_back(2);
v.push_back(3);
cout << "shortvec = " << mat(v) << endl;
vectorpoints(20);
for (size_t i = 0; i < points.size(); ++i)
points[i] = point2f((float)(i * 5), (float)(i % 7));
cout << "points = " << points << ";" << endl;
return 0;
}
opencv學習 vector的基礎知識點
之前一直仿照別人用vector 但是一直是仿照著實現功能,然而並不是很清楚它的基礎知識,所以今天好好整理一下,便於以後複習,便於需要的人們檢視!vector 1 解釋 容器,可以存放各種型別的物件,是乙個動態陣列,存放各種型別的資料 注意 如果要表示的向量長度較長 需要為向量內部儲存很多數 容易導致...
基礎知識點
1 inline block布局 2 table布局 3 justify的末行不對齊 4 兩個圖示之間有空格 換行 5 背景中的的 路徑的 全部斜槓都為 不是 命令列下的這種 doctype html html head meta charset utf 8 title xx title head ...
erlang基礎知識點
1 變數是不可改變的,必須以首字母大寫開頭 2 字串就是小寫字母,或者單引號引起來的字串 3 賦值可以使用匹配模式 4 資料結構有元組,取值用匹配模式來取值 就能取到x,b的值 5 資料結列表 ss,aa,取值是用 head foot 的形式取值 頭和尾的形式匹配 6 字串只能用雙引號表示 7 函式...