資源簡介
沒有加頭文件,使用的是callback 跟蹤用的是像素匹配 電腦不好的可能會卡
代碼片段和文件信息
IplImage?*?src;//定義一個img?存儲每一幀圖像
IplImage?*ftemp[6];
IplImage?*?cpl;
//IplImage??*temp1;
int?i=0MxMy;
int?iijjkk;
char?c;
CvPoint??MatchMin;
CvPoint??MatchMax;
CvRect?box;
bool?draw_box=false;
int?draw_finish=1;
int?flag=1;
void?suanfa(IplImage?*?srcIplImage?*?temp);
void?mouseHandler(int?eventint?xint?yint?flagsvoid?*?param);
void?DrawBox(IplImage?*?imgCvRect?rect);
IplImage*?cvGetSubImage(IplImage?*image?CvRect?roi);
void?main()
{?
CvCapture?*?capture;//初始化capture
capture=cvCreateCameraCapture(0);//初始化攝像頭
cvNamedWindow?(?“Image“?1?);
cvNamedWindow(?“F“?1?);
cvSetMouseCallback(“Image“mouseHandlerNULL);//*注冊鼠標
for(;;){
?if(flag!=0){
src=cvQueryframe(capture);//獲取當前幀
if(cpl!=0){
???suanfa(srccpl);
}
DrawBox(srcbox);//*
cvShowImage(?“Image“?src?);
cvReleaseImage(&ftemp[i]);
?}
??c=cvWaitKey(33);
??if?(c==32)?
??{
???do??c=cvWaitKey(0);?
???while?(c!=13?&&?c!=27);
???{
???
???}
??}
??if(c==27)?break;
}
}
void?mouseHandler(int?eventint?xint?yint?flagsvoid?*?param)
{
?switch(event){
?case?CV_EVENT_LBUTTONDOWN:{
???????draw_finish=(draw_finish+1)%2;???
???????draw_box=true;
???????box.width=0;
???????box.height=0;
???????box.x=x;
???????box.y=y;
???????}break;
?case?CV_EVENT_LBUTTONUP:{
???????draw_finish=(draw_finish+1)%2;
???????draw_box=false;
???????cpl=cvGetSubImage(srcbox);
???????box.width=x-box.x;
???????box.height=y-box.y;
???????}break;
?case?CV_EVENT_MO
評論
共有 條評論