如何使监控图像镜像?(200分)

  • 主题发起人 主题发起人 dittw
  • 开始时间 开始时间
D

dittw

Unregistered / Unconfirmed
GUEST, unregistred user!
请提供算法?
 
procedure TMainForm.N16Click(Sender: TObject);
var
I,J :integer;
p,p1 :PByteArray;
Bmp,Bmp1 :TBitmap;
begin
Bmp :=TBitmap.Create;
Bmp.Assign(MainImage.Picture.Bitmap);
Bmp1 :=TBitmap.Create ;
Bmp1.Assign(MainImage.Picture.Bitmap);
case (Sender as TMenuItem).Tag of
1://///////////水平镜像
begin
for J :=0 to Bmp.Height-1 do
begin
p :=Bmp.ScanLine[J];
P1 :=Bmp1.ScanLine[J];
for I :=0 to Bmp.Width-1 do
begin
p1[3*(Bmp.Width-1-I)+2] :=p[3*I+2];
p1[3*(Bmp.Width-1-I)+1] :=p[3*I+1];
p1[3*(Bmp.Width-1-I)] :=p[3*I];
end;
end;
BitBlt(MainImage.Canvas.Handle,0,0,MainImage.Width,MainImage.Height,
Bmp1.Canvas.Handle,0,0,SRCCOPY);
end;
2://////////////////垂直镜像
begin
for J :=0 to Bmp.Height-1 do
begin
p :=Bmp.ScanLine[J];
P1 :=Bmp1.ScanLine[Bmp.Height-1-J];
for I :=0 to Bmp.Width-1 do
begin
p1[3*I+2] :=p[3*I+2];
p1[3*I+1] :=p[3*I+1];
p1[3*I] :=p[3*I];
end;
end;
BitBlt(MainImage.Canvas.Handle,0,0,MainImage.Width,MainImage.Height,
Bmp1.Canvas.Handle,0,0,SRCCOPY);
end;
end;
Bmp.Free;
Bmp1.Free;
end;
 
唉。。。。。。。。。。。。。
 
我这时提供了一种方法(不是算法):

对摄像头的图像的处理可放在一个回调函数里,如(myProcBmp),然后在capSetCallbackOnFrame里设置,
如:capSetCallbackOnFrame(wndCap, myProcBmp);
看看帮助,
 
多人接受答案了。
 
后退
顶部