2013年3月8日 星期五

第四週

沒有隱形人也沒有小物




(......)
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <stdio.h>

#define refBlue 0
#define refGreen 0
#define refRed 50

#define targetBlue 0
#define targetGreen 0
#define targetRed 255

#define targetBlue1 35
#define targetGreen1 125
#define targetRed1 45

#define targetBlue2 80
#define targetGreen2 70
#define targetRed2 60

#define targetBlue3 160
#define targetGreen3 50
#define targetRed3 255

#define TH1 100

CvCapture *capture; 


IplImage* frame = NULL;
IplImage* frame2 = NULL;

int main( int argc, char** argv )
{capture=cvCreateCameraCapture( 0 );

while(1)
{

//載入圖像,

frame = cvQueryFrame(capture); 

frame2 = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 3);
frame2=cvCloneImage(frame);

for (int y=0; y<frame2->height; y++) {  
  uchar* ptr1=(uchar*) (frame2->imageData +y*frame2->widthStep); 
  uchar* ptr2=(uchar*) (frame2->imageData +y*frame2->widthStep); 
  for (int x=0; x<frame2->width; x++) { 
      
     int D= (ptr1[3*x] - refBlue) *  (ptr1[3*x] - refBlue) +
            (ptr1[3*x+1] - refGreen) * (ptr1[3*x+1] -refGreen) +
            (ptr1[3*x+2] - refRed) * (ptr1[3*x+2] - refRed);
    //printf("%d %d %d %.2f\n",ptr1[3*x],ptr1[3*x+1],ptr1[3*x+2], sqrt(D));    

        
    if (sqrt(D) < TH1 && x < frame -> width/2 && y < frame->height/2) {
  
         ptr1[3*x]=targetBlue;
         ptr1[3*x+1]=targetGreen;
         ptr1[3*x+2]=targetRed;  
  } 
         
    if (sqrt(D) < TH1 && x < frame->width/2 && y > frame->height/2){
  
         ptr1[3*x]=targetBlue1;
         ptr1[3*x+1]=targetGreen1;
         ptr1[3*x+2]=targetRed1; 
  }        
         
    if (sqrt(D) < TH1 && x > frame->width/2 && y < frame->height/2){

         ptr1[3*x]=targetBlue2;
         ptr1[3*x+1]=targetGreen2;
         ptr1[3*x+2]=targetRed2;
}
 
    if (sqrt(D) < TH1 && x > frame->width/2 && y > frame->height/2) {
  
         ptr1[3*x]=targetBlue3;
         ptr1[3*x+1]=targetGreen3;
         ptr1[3*x+2]=targetRed3;   
}
        
 
}
 


}

cvNamedWindow("Original frame", 1);
cvNamedWindow("Changed frame", 1);


cvShowImage( "Original frame", frame );
cvShowImage( "Changed frame", frame2 );
cvWaitKey(20);
}

cvDestroyWindow( "Original frame" );
cvDestroyWindow( "Changed frame" );

cvReleaseImage( &frame );
cvReleaseImage( &frame2 );



}

我學到了那個{}所處位置的重要性.............


沒有留言:

張貼留言