利用opencv檢測出矩形

2021-07-10 12:30:35 字數 3147 閱讀 6378

#pragma once

#include "troot.h"

#include "cbintoprofile.h"

#include "th1.h"

#include "cbmpdiff.h"

#include "ccircletopeak.h"

#include "ccolorcut.h"

#include "ccubicbspline.h"

#include "ccurveangle.h"

#include "cedgehit.h"

#include "cedgehitchain.h"

#include "cedgetocirclechain.h"

#include "cedgetofloat.h"

#include "cfloatmatch.h"

#include "cframe.h"

#include "cintprofiletofloat.h"

#include "clbp.h"

#include "cline.h"

#include "clinepara.h"

#include "cnormtopeak.h"

#include "cpictobin.h"

#include "cpictoedge.h"

#include "cpointprojection.h"

#include "cpointtocircle.h"

#include "cpointtonorm.h"

#include "cpointtopeak.h"

#include "cprofile.h"

#include "cregionmatch.h"

#include "csixsword.h"

#include "ctime.h"

#include "lib.h"

#include "vlib.h"

#include "paras.h"

#include "spline.h"

#include

#include

#include

using

namespace cv;

using

namespace

std;

void setframe(videocapture cap, double w, double h)

cvmemstorage* storage;//cvmemstorage 動態記憶體儲存及操作函式

cvmemstorage* tempstorage;

void initstorage()//初始化記憶體空間

void releasestorage()//釋放記憶體空間

cvseq* tempcontour;

cvseqwriter writer;

cedgehit *temphit;

cvpoint temppoint;

cvseq* transform(cedgehitchain chain)//自定義的transform函式

return tempcontour;//返回輪廓

}// angle函式用來返回(兩個向量之間找到角度的余弦值)勾股定理

double angle(cvpoint* pt1, cvpoint* pt2, cvpoint* pt0)

int main(int argc, char *argv)

double w = 320, h = 320;

setframe(cap_1, w, h);

mat frame_1;

iplimage* image_1;

iplimage* gray;

cvsize sz;

csixsword tc;

cvseq* contour;

cvseq* result;

cvseq* squares;

initstorage();

bool stop = false;

while (!stop)

if (s < 0.1)

for (int j = 0; j < 4; j++)

cvseqpush(squares, (cvpoint*)cvgetseqelem(result, j));//squares最後儲存的就是矩形}}

cout

<< "squares->total:"

<< squares->total/4

<< endl << endl;

cvseqreader reader;

cvstartreadseq(squares, &reader, 0);

int i;

int x[4] = , y[4] = ;

for (i = 0; i < squares->total; i += 4)//i+=4是因為四個點才是一矩形

cvpolyline(image_1, &rect, &count, 1, 1, cv_rgb(0, 255, 0), 1, cv_aa, 0);//在影象中用綠色線標出矩形區域

}cvshowimage("vedio_1", image_1);//顯示視窗

if (waitkey(27) >= 0)//esc鍵退出

stop = true;

}releasestorage();//釋放記憶體

return

0;}

**中有導師寫的類所以需要先把導師的類轉換成逼近函式需要的資料型別就花費了很長時間,不過這個過程讓自己對opencv更了解了~~棒棒的 導師的最終任務是完成雙目程式 不過這個**裡有3個問題!

1.在中我們能看到所返回的矩形座標是有偏差的暫時還沒有解決~~

2.檢測矩形是會把外矩形也檢測進去這個也仍未解決~~

3.程式執行時所占用的記憶體會一直上公升,上公升到一定值時程式就會報錯中止~~

OpenCV矩形檢測

opencv矩形檢測 需求 提取影象中的矩形,影象存在汙染現象,即矩形區域不是完全規則的矩形。思路一 輪廓法 opencv裡提取目標輪廓的函式是findcontours,它的輸入影象是一幅二值影象,輸出的是每乙個連通區域的輪廓點的集合 vector 外層vector的size代表了影象中輪廓的個數,...

利用OpenCV進行顏色檢測

rgb通道與hsv通道在顏色檢測中的區別 hsv是相對rgb的另一種顏色表示方式,它相對rgb而言,是一種比較直觀的顏色模型。其中顏色的引數分別是 色調 h 飽和度 s 明度 v 色調h 用角度度量,取值範圍為0 360 從紅色開始按逆時針方向計算,紅色為0 綠色為120 藍色為240 它們的補色是...

OPENCV檢測矩形並計算其中心

include cv.h include highgui.h include include include pragma comment lib,cv.lib pragma comment lib,cxcore.lib pragma comment lib,highgui.lib iplimage...