opencv 基礎知識點

2021-08-25 05:29:38 字數 3793 閱讀 4638

一、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 函式...