2013年5月6日 星期一

00360151_李飛鴻_相框+四象限變色









#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];
                           
  /*     if(ptr2[3*(x+x1)]<120 && ptr2[3*(x+x1)+1]<150&& ptr2[3*(x+x1)+2]<100)
    {
     ptr2[3*(x+x1)]=0;
     ptr2[3*(x+x1)+1]=0;
     ptr2[3*(x+x1)+2]=255;
     }
     //黑變紅
   */
       
 
   /*    
   if(ptr2[3*(x+x1)]<120 && ptr2[3*(x+x1)+1]<150&& ptr2[3*(x+x1)+2]<100)
    {
    if (x > frame->width/2 && y < frame->height/2)
     {ptr2[3*(x+x1)]=0;
     ptr2[3*(x+x1)+1]=255;
     ptr2[3*(x+x1)+2]=255;  }
     else if (x < frame->width/2 && y < frame->height/2)
     {ptr2[3*(x+x1)]=0;
     ptr2[3*(x+x1)+1]=0;
     ptr2[3*(x+x1)+2]=255; }
     else if (x < frame->width/2 && y > frame->height/2)
    { ptr2[3*(x+x1)]=0;
     ptr2[3*(x+x1)+1]=255;
     ptr2[3*(x+x1)+2]=255; }
     else if (x > frame->width/2 && y > frame->height/2)
    { ptr2[3*(x+x1)]=0;
     ptr2[3*(x+x1)+1]=0;
     ptr2[3*(x+x1)+2]=255;  }
     //四個象限
     }
   */

 
 
     

   
       }
    }
  }





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

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");

}

沒有留言:

張貼留言