Opencv抠图.doc_第1页
Opencv抠图.doc_第2页
Opencv抠图.doc_第3页
Opencv抠图.doc_第4页
Opencv抠图.doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include stdafx.h#include cv.h#include highgui.h#include cxcore.h#include #include using namespace std;#define pi 3.1415926#define h 20 /#define width 512#define height 480struct colornode int colorR; int colorG; int colorB;vector background;vector target;int flag;/1代表前景,2代表背景CvPoint prev_pt = -1,-1;IplImage *pImg,*newImg,*showImg;int color;IplImage* inpaint_mask = 0;IplImage* img0 = 0, *img = 0, *inpainted = 0;uchar *data,*newdata,*showdata;int channels, step,depth; double prbxheightwidth,prfxheightwidth;void on_mouse(int event,int x,int y,int flags,void * param) colornode a; if( event = CV_EVENT_LBUTTONUP | !(flags & CV_EVENT_FLAG_LBUTTON) ) prev_pt = cvPoint(-1,-1); else if( event = CV_EVENT_LBUTTONDOWN ) prev_pt = cvPoint(x,y); else if( event = CV_EVENT_MOUSEMOVE & (flags & CV_EVENT_FLAG_LBUTTON) CvPoint pt = cvPoint(x,y); if( prev_pt.x height; /width=pImg-width; newImg=cvCloneImage(pImg); showImg=cvCloneImage(pImg); cvNamedWindow(Interaction,-1); cvShowImage(Interaction,newImg); depth=pImg-depth; step=pImg-widthStep; channels=pImg-nChannels; data=(uchar *) pImg-imageData; newdata=(uchar *) newImg-imageData; showdata=(uchar *) showImg-imageData; cvSetMouseCallback( Interaction, on_mouse, 0); printf( Hot keys: n t ESC - quit the programn t 1 - target paintingn t 2 - background paintingn); for(;) char ch=cvWaitKey(); if (ch=3) break; if (ch=1) flag=1; if(ch= 2) flag=2; /cvShowImage( Interaction, newImg); /cvWaitKey(0); /继续处理 int sizeback,sizetarget; double distance; /data=(uchar *) pImg-imageData; for(i=0;iheight;i+) for(j=0;jwidth;j+) prbxij=0; prfxij=0;/target sizeback=background.size(); sizetarget=target.size(); printf(computing probability.n); for(i=0;iheight;i+) printf(i=%dn,i); for(j=0;jwidth;j+) for(k=0;ksizeback;k+) distance=(backgroundk.colorR-datai*step+j*channels)*(backgroundk.colorR-datai*step+j*channels)+(backgroundk.colorG-datai*step+j*channels+1)*(backgroundk.colorG-datai*step+j*channels+1)+(backgroundk.colorB-datai*step+j*channels+2)*(backgroundk.colorB-datai*step+j*channels+2); prbxij+=exp(-distance/(2*h*h)/(sizeback*h*h*sqrt(2*pi); for(k=0;ksizetarget;k+) distance=(targetk.colorR-datai*step+j*channels)*(targetk.colorR-datai*step+j*channels)+(targetk.colorG-datai*step+j*channels+1)*(targetk.colorG-datai*step+j*channels+1)+(targetk.colorB-datai*step+j*channels+2)*(targetk.colorB-datai*step+j*channels+2); prfxij+=exp(-distance/(2*h*h)/(sizetarget*h*h*sqrt(2*pi); double sumprb,sumprf; sumprb=0.; sumprf=0.; for(i=0;iheight;i+) for(j=0;jwidth;j+) sumprb+=prbxij; sumprf+=prfxij; for(i=0;iheight;i+) for(j=0;jwidth;j+) prbxij/=sumprb; prfxij/=sumprf; for(i=0;iheight;i+) for(j=0;j=prfxij)/这个点属于前景 showdatai*step+j*channels=255; showdatai*step+j*channels+1=255; showdatai*step+j*channels+2=255; cvNamedWindow(showImg,1); cvShowImage(showImg,showImg); cvWaitKey(0); cvDestroyWindow(Interac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论