#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");
}
沒有留言:
張貼留言