Opencv3 基礎資料型別

2021-08-28 05:19:20 字數 4430 閱讀 6284

操作

例子預設構造器

cv::point2i p;

cv::point3f p;

複製構造器

cv::point3f p2( p1 );

賦值構造器

cv::point2i( x0, x1 );

cv::point3f( x0, x1, x2 );

轉換為固定 vector 類

(cv::vec3f) p;

元素訪問

p.x; p.y; // and for three-dimensional

// point classes: p.z

點乘float x = p1.dot( p2 );

雙精度點乘

double x = p1.ddot( p2 );

叉乘p1.cross( p2 ); // (for three-dimensional point

// classes only)

查詢點是否位於矩形內

p.inside( r ); // (for two-dimensional point

// classes only)

操作例子

預設構造器

cv::scalar s;

複製構造器

cv::scalar s2( s1 );

賦值構造器

cv::scalar s( x0 ); // 只初始化第乙個元素

cv::scalar s( x0, x1, x2, x3 );

元素級乘法

s1.mul( s2 );

(quaternion) conjugation

s.conj(); // (returns cv::scalar(s0,-s1,-s2,-s2))

(quaternion) real test

s.isreal(); // (returns true iff s1==s2==s3==0)

操作例子

預設構造器

cv::size sz;

cv::size2i sz;

cv::size2f sz;

複製構造器

cv::size sz2( sz1 );

賦值構造器

cv::size2f sz( w, h );

元素訪問

sz.width; sz.height;

計算面積

sz.area();

操作例子

預設構造器

cv::rect r;

複製構造器

cv::rect r2( r1 );

賦值構造器

cv::rect( x, y, w, h );

使用左上點和 size 構造

cv::rect( p, sz );

使用兩個腳點構造

cv::rect( p1, p2 );

元素訪問

r.x; r.y; r.width; r.height;

計算面積

r.area();

提取左上角

r.tl();

提取右下角

r.br();

判斷點是否在

r.contains( p );

矩形操作

操作例子

兩個矩形的交集

cv::rect r3 = r1 & r2;

r1 &= r2;

包含兩個矩形的最小矩形

cv::rect r3 = r1 | r2;

r1 |= r2;

平移矩形

cv::rect rx = r + x;

r += x;

放縮矩形

cv::rect rs = r + s;

r += s;

判斷矩形是否相等

bool eq = (r1 == r2);

判斷矩形是否不相等

bool ne = (r1 != r2);

操作例子

預設構造器

cv::rotatedrect rr();

複製構造器

cv::rotatedrect rr2( rr1 );

從兩點構造

cv::rotatedrect( p1, p2 );

從點(中心店),size,旋轉角度構造

cv::rotatedrect rr( p, sz, theta ) ;

元素訪問

rr.center; rr.size; rr.angle;

返回四個點

rr.points( pts[4] );

操作例子

預設構造器

cv::matx33f m33f; cv::matx43d m43d;

複製構造器

cv::matx22d m22d( n22d );

賦值構造器

cv::matx21f m(x0,x1); cv::matx44d

m(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15);

統一元素矩陣

m33f = cv::matx33f::all( x );

全零矩陣

m23d = cv::matx23d::zeros();

全一矩陣

m16f = cv::matx16f::ones();

單位矩陣

m33f = cv::matx33f::eye();

提取對角元素

m31f = cv::matx33f::diag(); // create a matrix of

// size 3-by-1 of floats

均勻分布矩陣

m33f = cv::matx33f::randu( min, max );

正態分佈矩陣

m33f = cv::matx33f::nrandn( mean, variance );

元素訪問

m( i, j ), m( i ); // one argument for

// one-dimensional matrices only

矩陣代數

m1 = m0; m0 * m1; m0 + m1; m0 – m1;

數乘m * a; a * m; m / a;

比較m1 == m2; m1 != m2;

點乘m1.dot( m2 ); // (sum of element-wise

// multiplications, precision of m)

雙精度點乘

m1.ddot( m2 ); // (sum of element-wise multiplications,

// double precision)

矩陣變形

m91f = m33f.reshape<9,1>();

強制轉換

m44f = (matx44f) m44d

提取(i,j)的子矩陣

m44f.get_minor<2, 2>( i, j );

提取行m14f = m44f.row( i );

提取列m41f = m44f.col( j );

提取矩陣對角線元素

m41f = m44f.diag();

轉置n44f = m44f.t();

取逆n44f = m44f.inv( method ); // (default method is

// cv::decomp_lu)

解線性方程

m31f = m33f.solve( rhs31f, method )

m32f = m33f.solve<2>( rhs32f, method ); // (template forma);

// default method is decomp_lu)

元素級乘法

m1.mul( m2 );

操作例子

預設構造器

vec2s v2s; vec6f v6f; // etc...

複製構造器

vec3f u3f( v3f );

賦值構造器

vec2f v2f(x0,x1); vec6d v6d(x0,x1,x2,x3,x4,x5);

元素訪問

v4f[ i ]; v3w( j ); // (operator() and operator

// both work)

向量叉乘

v3f.cross( u3f );

操作例子

預設構造器

cv::complexf z1; cv::complexd z2;

複製構造器

cv::complexf z2( z1 ); cv::complexf u2f( v2f );

賦值構造器

cv::complexd z1(re0); cv::complexd(re0,im1) ;

元素訪問

z1.re; z1.im;

共軛z2 = z1.conj();

opencv3程式設計入門

今天進行了簡單的影象修補 影象修補.cpp 先對影象進行破壞,然後進行修補 include stdafx.h include include include includeusing namespace std using namespace cv define win name1 原始圖 defi...

OPENCV3 模版匹配

一 引言 模板匹配的作用在影象識別領域作用可大了。那什麼是模板匹配?模板匹配,就是在一幅影象中尋找另一幅模板影象最匹配 也就是最相似 的部分的技術。說的有點抽象,下面給個例子說明就很明白了。在上面這幅全明星照中,我們想找出姚明頭像的位置,並把它標記出來,可以做到嗎?可以,這就是模板匹配的要做的事情。...

OpenCV3學習總結

影象處理技術一般包括影象壓縮,增強和復原,匹配 描述和識別3個部分。影象處理和計算機視覺的區別在於 影象處理側重於 處理 影象 如增強 還原 去噪 分割等 而計算機視覺重點在於使用計算機來模擬人的視覺。opencv由一系列c函式和c 類構成,擁有包括500多個c函式的跨平台的中高層api。openc...