作者ToyLoli (玩具萝莉≠脱衣萝莉)
看板C_and_CPP
标题Re: [问题] 抓取 1394 摄影机
时间Sun May 24 18:30:12 2009
※ 引述《ToyLoli (玩具萝莉≠脱衣萝莉)》之铭言:
: 我手上有一台 AVT 1394 摄影机,他有给 SDK
: 里面有一段取得单一影像的范例是这样的
: extern ID_TYPE nCamId; // id of an already opened camera
: extern UINT32_TYPE nHorizontalResolution; // the currently configured image
: // size
: extern UINT32_TYPE nVerticalResolution; //
: ATL::CImage Image;
: Image.Create( nHorizontalResolution , -1 * nVerticalResolution , 24 );
: UNI_RETURN_TYPE hr = UCC_GrabBitmapImage( nCamId ,
: (UINT8_TYPE*) Image.GetBits() ,
: INFINITE );
: 黄色的部份我 google 了一下,好像是 VC 内建的函数?
: 由於学长写的程式是用 BCB,如果我要用 BCB 写出相同的作用,应该要使用哪些元件
: 或是函式呢?可否请各位前辈提点一下?
自己回答看看,不知道对不对
黄色部份应该是要创建一个可以存影像的 buffer,参考书上的范例後写出
Graphics::TBitmap *TempBitmap;
TempBitmap = new Graphics::TBitmap();
TempBitmap -> Width = nHorizontalResolution;
TempBitmap -> Height = nVerticalResolution;
TempBitmap -> PixelFormat = pf24bit;
compile 可以过,但是不知道对不对
因为接下来卡在
Image.GetBits() 不知道该怎样改 囧
再次请教各位前辈该从哪方面着手 Orz
--
法轮弓
远程 弓
8300 - 9500伤害 速度 1.50
(每秒伤害5933.3)
装备: 你在中国解放军的声望将永久仇恨。
击中时可能: 迫使敌人召唤一名武警为他作战。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.126.145.206
1F:→ WPC001:GetBits()只是取得整个影像资料的记忆体指标 05/24 18:52
2F:→ WPC001:也就是Pixel(0,0)的位置... TBitmap你查一下,应该也有 05/24 18:53
唔...还是没有任何头绪,不知道该用什麽去取代 GetBits()
我尝试着将 GetBits() 以 TempBitmap 取代是可以 compile 过
但是程式还是抓不到影像
另外,上面亮白色那边,有人可以帮我看看这样写取代那两行程式码是对的吗?
※ 编辑: ToyLoli 来自: 140.126.145.206 (05/24 22:33)
3F:→ WPC001:你的Image object, 没有初始化, 你必须告知建立的大小 05/25 12:45
4F:→ WPC001:我不确定TBitmap直接指定Width和Height是否就会建立完成 05/25 12:46
5F:→ WPC001:因为他的H/V/D是分开指定的, 感觉很怪... 05/25 12:47
6F:推 VictorTom:TBitmap new过以後这样用就可以了, 虽然我也搞不太懂它 05/25 12:50
7F:→ VictorTom:怎麽依照重设的W/H/D来分配memory的....@_@" 05/25 12:51
8F:→ VictorTom:如果是要拿到pixel data, TBitmap是直接 ->ScanLine[i] 05/25 12:52
9F:→ VictorTom:i就是第条的scanline, 从0~Height-1, 至於每个pixel有 05/25 12:52
10F:→ VictorTom:多少byte就看你的pixelformat了. 05/25 12:52
11F:→ VictorTom:如果你是要显示, 我记得直接丢个Panel给它就可以显示了. 05/25 12:53
12F:→ VictorTom:如果是用VCL元件bar上的TImage, 简单的操作可以像这样~~ 05/25 12:54
13F:→ VictorTom:Image->Picture->Bitmap->....就可以access pixel了. 05/25 12:55
14F:→ VictorTom:不过, 如果你的Image没有load过Bitmap图档, 就不能直接 05/25 12:56
15F:→ VictorTom:用, 还是要经过TBitmap new的程序才可以.... 05/25 12:56
16F:→ VictorTom:有个问题是, TBitmap的ScanLine我不记得有保证一定连续 05/25 12:57
17F:→ VictorTom:Image.GetBit应该是放destination吧, 那就自己开一块 05/25 12:57
18F:→ VictorTom:WxHxD的空间给它, 再一条一条scanline copy进TBitmap 05/25 12:58