2013年4月29日 星期一

00360612_惠增展_相框


上次請假沒上到課害我這次追進度追到下課,好累喔!!
不過終於做出來了開心^^
------------------------------------------------------
程式碼:
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include "stdio.h"

#define alpha 0.3
#define x1 0
#define y1 0

int main()
{
IplImage* gray = NULL;
IplImage* bw = NULL;
IplImage* pCannyImg = NULL;

CvCapture *capture;
IplImage *frame;
capture=cvCreateCameraCapture(0);
cvNamedWindow("Webcam",1);
cvNamedWindow("Webcam1",1);
cvNamedWindow("Webcam2",1);
cvNamedWindow("Webcam3",1);
cvNamedWindow("Webcam4",1);



//----------------------------------------
IplImage* pImg = NULL;
IplImage* bImg = NULL;
IplImage* gImg = NULL;
IplImage* rImg = NULL;
IplImage* logoImg = NULL;
IplImage* mergeImg = NULL;

//----------------------------------------

while(1)
{
frame = cvQueryFrame(capture);
logoImg=cvLoadImage("ph1.jpg");
//-----------
bImg = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 3);
gImg = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 3);
rImg = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 3);
mergeImg = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 3);
//-----------

cvShowImage("Webcam", frame);

gray = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 1);

//-------------------

// Get blue pixels
for (int y=0; y<frame->height; y++) {
  uchar* ptr1=(uchar*) (frame->imageData +y*frame->widthStep);
  uchar* ptr2=(uchar*) (bImg->imageData +y*bImg->widthStep);
  for (int x=0; x<frame->width; x++) {    
     ptr2[3*x]=ptr1[3*x];
     ptr2[3*x+1]=0;
     ptr2[3*x+2]=0;  
     }
}


// Get green pixels
for (int y=0; y<frame->height; y++) {
  uchar* ptr1=(uchar*) (frame->imageData +y*frame->widthStep);
  uchar* ptr2=(uchar*) (gImg->imageData +y*gImg->widthStep);
  for (int x=0; x<frame->width; x++) {    
     ptr2[3*x]=0;
     ptr2[3*x+1]=ptr1[3*x+1];
     ptr2[3*x+2]=0;  
     }
}

// Get red pixels
for (int y=0; y<frame->height; y++) {
  uchar* ptr1=(uchar*) (frame->imageData +y*frame->widthStep);
  uchar* ptr2=(uchar*) (rImg->imageData +y*rImg->widthStep);
  for (int x=0; x<frame->width; x++) {    
     ptr2[3*x]=0;
     ptr2[3*x+1]=0;
     ptr2[3*x+2]=ptr1[3*x];  
     }
}


//Insert a logo into an image


mergeImg=cvCloneImage(frame);
  for (int y=0; y<logoImg->height; y++) {
    uchar* ptr2=(uchar*) (logoImg->imageData +y*logoImg->widthStep);
    uchar* ptr1=(uchar*) (mergeImg->imageData +(y+y1)*mergeImg->widthStep);
    for (int x=0; x<logoImg->width; x++) {    
       if(ptr2[3*(x+x1)]==255 && ptr2[3*(x+x1)+1]==255 && ptr2[3*(x+x1)+2]==255){
                              ptr2[3*(x+x1)]=ptr1[3*(x+x1)];
                              ptr2[3*(x+x1)+1]=ptr1[3*(x+x1)+1];
                              ptr2[3*(x+x1)+2]=ptr1[3*(x+x1)+2];
       }
    }
  }  

//------------------------

cvShowImage("Webcam", frame);
cvShowImage("Webcam1", gImg);
cvShowImage("Webcam2", bImg);
cvShowImage("Webcam3", rImg);
cvShowImage("Webcam4", logoImg);


cvWaitKey(10);
}
cvReleaseCapture(&capture);
cvDestroyWindow("Webcam");
cvDestroyWindow("Webcam1");
cvDestroyWindow("Webcam2");
cvDestroyWindow("Webcam3");

}

沒有留言:

張貼留言