2010年6月20日 星期日

HW03: Pixel-Level Processing in OpenCV




















這次的作業是以像素的層級來看的
用了兩個迴圈就能掃描一張圖
for (int y=0; yheight; y++) {
uchar* ptr1=(uchar*) (frame->imageData +y*frame->widthStep);
uchar* ptr2=(uchar*) (frame2->imageData +y*frame2->widthStep);
    for (int x=0; xwidth; x++) {
          ptr2[3*x]=ptr1[3*x];  //抓藍色
          ptr2[3*x+1]=0;
          ptr2[3*x+2]=0;
   }
}
 
由上得知,一個像素由三個元素組成,依序為BGR
一個畫面就像一個矩陣,存放著這些像素
 
 
下面是放一張圖片在上面,其中alpha常數是調整透明度
for (int y=0; yheight; y++) {
   uchar* ptr1=(uchar*) (logoImg->imageData +y*logoImg->widthStep);
   uchar* ptr2=(uchar*) (frame5->imageData +(y+y1)*frame5->widthStep);
       for (int x=0; xwidth; x++) {
          ptr2[3*(x+x1)]=alpha*ptr1[3*(x+x1)] + (1-alpha)*ptr2[3*(x+x1)];
          ptr2[3*(x+x1)+1]=alpha*ptr1[3*(x+x1)+1] + (1-alpha)*ptr2[3*(x+x1)+1];
          ptr2[3*(x+x1)+2]=alpha*ptr1[3*(x+x1)+2] + (1-alpha)*ptr2[3*(x+x1)+2];
       }
}

沒有留言:

張貼留言