題目:在左右視窗分別戴上不同的皇冠
1.先把視窗分邊
cvLine(src,cvPoint(325,0),cvPoint(325,500),CV_RGB(255,0,0),3,8,0);
ps:使用的是筆電視訊鏡頭
2.讀取圖片 偵測皮膚
logoImg1=cvLoadImage("p1.jpg");
logoImg2=cvLoadImage("p2.jpg");
if (blackPixelNumber > 0) {
mouseX=blackPixelX/blackPixelNumber;
mouseY=blackPixelY/blackPixelNumber;
}
將上面兩張圖片帶入視訊
mergeImg=cvCloneImage(src);
for (int y=0; y<logoImg1->height; y++) {
uchar* ptr1=(uchar*) (logoImg1->imageData +y*logoImg1->widthStep);
uchar* ptr2=(uchar*) (mergeImg->imageData +(y+y1)*mergeImg->widthStep);
for (int x=0; x<logoImg1->width; x++) {
if(ptr1[3*(x)] < 210 && ptr1[3*(x+1)] < 210 && ptr1[3*(x+2)] < 210){
ptr2[3*(x+x1)]=ptr1[3*(x)] ;
ptr2[3*(x+x1)+1]=ptr1[3*(x)+1] ;
ptr2[3*(x+x1)+2]=ptr1[3*(x)+2] ;
}
}
}
for (int y=0; y<logoImg2->height; y++) {
uchar* ptr1=(uchar*) (logoImg2->imageData +y*logoImg2->widthStep);
uchar* ptr2=(uchar*) (mergeImg->imageData +(y+y2)*mergeImg->widthStep);
for (int x=0; x<logoImg2->width; x++) {
if(ptr1[3*(x)] < 239 && ptr1[3*(x+1)] < 239 && ptr1[3*(x+2)] < 239){
ptr2[3*(x+x2)]=ptr1[3*(x)] ;
ptr2[3*(x+x2)+1]=ptr1[3*(x)+1] ;
ptr2[3*(x+x2)+2]=ptr1[3*(x)+2] ;
}
}
}
下面兩張帶入圖片
for (int y=0; y<logoImg1->height; y++) {
uchar* ptr1=(uchar*) (logoImg1->imageData +y*logoImg1->widthStep);
uchar* ptr2=(uchar*) (mergeImg->imageData +(y+mouseY-110)*mergeImg->widthStep);
for (int x=0; x<logoImg1->width; x++) {
if(mouseX<=155)
if(ptr1[3*(x)] < 210 && ptr1[3*(x+1)] < 210 && ptr1[3*(x+2)] < 210){
ptr2[3*(x+mouseX-50)]=ptr1[3*(x)];
ptr2[3*(x+mouseX-50)+1]=ptr1[3*(x)+1];
ptr2[3*(x+mouseX-50)+2]=ptr1[3*(x)+2];
}
}
}
for (int y=0; y<logoImg2->height; y++) {
uchar* ptr1=(uchar*) (logoImg2->imageData +y*logoImg2->widthStep);
uchar* ptr2=(uchar*) (mergeImg->imageData +(y+mouseY-110)*mergeImg->widthStep);
for (int x=0; x<logoImg2->width; x++) {
if(mouseX>=165)
if(ptr1[3*(x)] < 239 && ptr1[3*(x+1)] < 239 && ptr1[3*(x+2)] < 239){
ptr2[3*(x+mouseX-50)]=ptr1[3*(x)];
ptr2[3*(x+mouseX-50)+1]=ptr1[3*(x)+1];
ptr2[3*(x+mouseX-50)+2]=ptr1[3*(x)+2];
}
}
}
心得:一開始看到題目時,心裡大概有想法,
把線分開後,如何將皇冠放進去並且使其跟
隨我們擺動便使我困惑許久,在考試後問了許多同學,
也搞懂了並順利完成這個作業。
沒有留言:
張貼留言