如何设置电子摄象中视频窗口的大小(300分)

  • 主题发起人 主题发起人 fei_l
  • 开始时间 开始时间
F

fei_l

Unregistered / Unconfirmed
GUEST, unregistred user!
[?] 要求:任意改变来自视频捕捉卡信号预览窗口的尺寸,预览窗口能剪切
视频信号图象的中间部分。打个比喻:整个视频信号的帧的尺寸如"回"字的
外"口",而预览窗口如"回"字的内"口",捕捉单幅图象时,所看到的就如预
览窗口中所看到的一样。(非预览窗口中的视频图象部分不用看到。)
我现在所用的component是videocap,能改变预览窗口的大小,但是不能
把预览窗口放到视频信号的帧的中间,要求摄象头正对被摄者。
富翁们,如何解决这个问题?快帮帮我吧。
先加300分吧,不够再添。
 
用的是预懒览还是覆盖,如果是预览的话,是有办法的.
假设你用来显示画面的控件是Panel,用以下的语句就可以实现只显示图象的左上角.

procedure TForm1.Hahaha;
var
Width, Height: Integer;
Rgn: HRgn;
begin
Panel.Align:=alNone;
Width:=Panel.Width;
Height:=Panel.Height;
//停止预览
Panel.Width:=Panel.Width*2;
Panel.Height:=Panel.Height*2;
Rgn:=CreateRectRgn(0, 0, Width, Height);
SetWindowRgn(Panel.Handle, Rgn,True);
//开始预览
end;
 
多谢LeeChange的回答。

我现在有了一个很"笨"的办法:
1.增加一个image1,设置属性
autosize:=false;
stretch:=false;
center:=true;
visible:=false; // 这是一个中间处理过程用到,不用显示
捕捉的相片首先load进这里,为加工作准备。尺寸与视频窗口的大小相同,
保证与所看到的视频图象一致嘛。
2.加入一个image2,大小与image1同。
摄象时,由于不能将视频信号象剪相片一样剪掉,因此首先将全幅保存下来。
然后在image1中load,
用CopyRect(myrect,image1.Canvas,SRect)将image1中间的图片部分复制到
image2中,将image2中的相片保存即可。
如果大家有更好的方法,请告诉我,多谢。

具体源码如下:

拍摄按键代码:
var
MyRect : TRect;
SRect:TRect;
begin
VideoCap1.SingleImageFile:= 'capture.bmp'; // 指定捕捉的相片文件名
VideoCap1.GrabFrameNoStop;
if not VideoCap1.SaveAsDib then MessageDlg('不能摄象!',mtError,[mbOK],0);
if FileExists('Capture.bmp') then
begin // edit1、edit2 为截取的起始位置,调整这两个数值保证与视频窗口看到的一样
image1.Picture.LoadFromFile('Capture.bmp');
myrect:=rect(0,0,image1.width,image1.Height);
SRect:=rect(strtoint(edit1.Text),strtoint(edit2.Text),image1.width+strtoint(edit1.text),image1.height+strtoint(edit2.text));
image2.Canvas.CopyRect(myrect,image1.Canvas,SRect);
image2.Picture.SaveToFile('xp.bmp');
end;
end;
请继续讨论。
帮我up者有分啊
 
多人接受答案了。
 
这个分分的也太夸张了一点吧.
幸好我不缺分用.
 
to LeeChange:
不好意思,不小心搞错了。应刚好掉过来的。
 
后退
顶部