越来越多的关于图像的问题,怎么办呢?[:(](100分)

  • 主题发起人 主题发起人 crazycock
  • 开始时间 开始时间
C

crazycock

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(]
哎,分也没有了,就这些了,大家看着分吧~~~~~~
有这些问题,答一些是一些,都帮帮我.
1.如何实现图像区域的选择功能(好比画图板、PhotoShop中选择区域的时候,可以有一个
闪烁并且滚动的区域标志虚线),我见过一个程序实现了,但是没有原代码~
2.有没有可以在一个框里显示多个图像的控件(相当于缩略图方式),我也找过,不过安
装的时候提示出错了。
3.数码相机能够通过什么方式在计算机的屏幕上实时观察到目前拍摄到的内容么?通过视频线?
需要加电视卡?或者直接通过连接线(如USB线来显示,好象速度达不到吧?),目的是通过屏幕
采集到的内容决定什么时候拍照,另外,数码相机用VideoCap能够控制吗?能够让数码相机拍摄吗?
还有问题想不起来了,让我再想想再提吧,另外给分。
 
2.有的,在深度历险上有一个thums控件,包含thumviwer,thumnail,thumimage等,修改一下bug,就可以了。
我改造了一下,用它来显示好多缩略图,很好用的。
 
你的问题真是多如麻啊!
我怎么感觉你是在做一个什么项目,里面才会涉及这么多的东东;
说说你的项目吧,你这么孤立的提问题,既让人摸不着头脑,你自己又白白浪费分数,
何苦呢?

大致谈谈你的项目,如果我碰巧做过相关的东东,也许真的会帮你不少。
其实你说的那些什么问题,在我以前做的课题里都有,只是现在要想单独整理出来太麻烦了!
 
1.这个可以就用xor画线的方式搞定. 用双缓冲就可以了.估计是用来裁减的
2.缩略图显示还是自己写一个吧. 继承paintbox 就可以了.比较方便.
3.数码相机通过不同的连线和pc连, com口和usb接口, 没有见过通过采集卡的,通过采集卡的还叫"数码"相机吗?;).
数码相机的拍摄速度不快.可以说是很慢所以没有你"(如USB线来显示,好象速度达不到吧?)"的担忧.想快的只有用
摄像机了.既然不通过采集卡, 所以没有什么avicap可以用了. 如果相机有sdk的话,你就走运了.不过usb摄像头倒是可以考虑考虑.
不顾我估计你用来照相的是看不上它的低分辨率的,呵呵.
 
To Winion:
能把你修改过的发给我吗?我确实找到那个东西了,不过有Bug。
To 卷兄:
果然厉害,一下就看出来了,确实我在做这么一个东西,具体的内容等我整理一下再
贴出来吧。
To Xwings:
具体的情况可能你还不熟悉,等我把具体情况写出来,你再帮忙研究一下,好吗?
 
项目名称:卡片制作机(就这个意思吧)
要求:通过图像获取设备(根据要求或实际情况选择摄像头或数码相机)实时地
显示目前拍摄对象的状态,然后在合适的时候,拍照,得到一个BMP图,然
后,用户可以选择配套的模版进行合成,就象电子像册一样,选择例如
“木框架”、“卡通乐园”等图片进行合成,合成的要求是,在模版中有一个
特定的区域,让拍摄到的图片在这个区域中显示出来(当然不是完全显示拍摄
到的图片,而仅能显示一部分内容),而且可以移动这个拍摄到的图片,以
决定显示的位置,然后呢,拍摄到的图片在模版中显示的内容,与模版的交
接处,需要模糊处理,不能是直接合并。然后后面的事情就是打印了。
在界面的显示上,还需要一个能够以缩略图形式显示多个图片的控件。
图片质量要求:320 X 240,即可。(另外,如果要求有照片级的打印,需要什么质量呢?)
效果图:(如椭圆圈中所示)http://crazycock.top263.net/1.gif
 
失望了~~~~~~~~~~~~~
这么久就几个人发了帖子,其他人难道都失踪了么?还是不懂???
 
to crazycock,e-mail地址?
 
哈,有意思,居然碰到一个和我搞差不多东东的同志,
给你我的邮箱: szchengyu@263.net
我们联系联系 :)
 
这个不难,一个是获取图象. 一个是合成. 合成很简单, 实现作好一堆模板就可以了. blend一下就OK了.
 
to winion:
我的信箱crazycock@371.net
 
只要是和图像有关的问题,卷姐就能帮你搞定!!
 
我提前…………………………………………………………
 
楼上各位留下邮件的朋友,源程序已发!

to crazycock:

>越来越多的关于图像的问题,怎么办呢?[:(]
>高分有请,图像特效显示的问题。(卷兄快救我…………)

我的鼻血都流出来了,千堆雪恐怕要改成千堆血了,^_^

>通过图像获取设备(根据要求或实际情况选择摄像头或数码相机)实时地
显示目前拍摄对象的状态,然后在合适的时候,拍照,得到一个BMP图>
摄像头帮你完成这个功能!

<用户可以选择配套的模版进行合成,就象电子像册一样,选择例如
“木框架”、“卡通乐园”等图片进行合成,合成的要求是,在模版中有一个
特定的区域,让拍摄到的图片在这个区域中显示出来(当然不是完全显示拍摄
到的图片,而仅能显示一部分内容),而且可以移动这个拍摄到的图片,以
决定显示的位置>
这个特定的区域,你想怎么表达?生动的显示么?那我推荐你用我的流动线功能,就象
PHOTOSHOP里的蚂蚁线一样!你可以参考:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=840870
我在那里写了直线的流动线算法,你改改就是任意区域的流动线了。
你的拍摄到的图片可以在这个区域里移动,就是说只显示区域内部的部分;那你就可以参考
图象的拷贝算法来实现;当然,如果区域是矩形,你拷贝移动很简单了;如果是非矩形区域,
你就创建该区域,然后SeleceClipRgn,这也可以实现。

<拍摄到的图片在模版中显示的内容,与模版的交
接处,需要模糊处理,不能是直接合并>
模糊处理有的是算法,包括我给你的那个例子里也有;一般是用高斯模糊来处理。
你的要求仅仅是处理交接处,那就仅仅模糊边界,无论是手动还是自动处理,
难吗?

<后面的事情就是打印了>
图象的打印你总会的吧?
同比例打印:
var
ScaleX, ScaleY: Integer;
R: TRect;

begin
Printer.BeginDoc; // **
with Printer do
try
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Width * ScaleX,
Image1.Picture.Height * ScaleY);
Canvas.StretchDraw(R, Image1.Picture.Graphic); // **
finally
EndDoc; // **
end;

<在界面的显示上,还需要一个能够以缩略图形式显示多个图片的控件。>
关于缩略图的控件,效果都不是很好,还是建议你自己做;
或者你看看这里:
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=450252

说来说去,好像也只有这些吧?
 
谢谢卷兄的回答,但是我还有问题。
[green]1。如果是非矩形区域,你就创建该区域,然后SeleceClipRgn,这也可以实现。[/green]
问:SelectClipRgn是一个函数吗?操作的对象是怎么产生的?
[green]2。<拍摄到的图片在模版中显示的内容,与模版的交
接处,需要模糊处理,不能是直接合并>
模糊处理有的是算法,包括我给你的那个例子里也有;一般是用高斯模糊来处理。
你的要求仅仅是处理交接处,那就仅仅模糊边界,无论是手动还是自动处理,
难吗?[/green]
问:我需要的是颜色的逐渐变化,不是高斯模糊,是地地道道的羽化,不要其他替代的方法,
能做到吗?
3。Alpha通道是怎么样一个概念,我心里怎么也想不明白,有没有这方面的资料可以参考。
 
Alpha-Blending 技术简介

  现在的游戏,不管是 2D 还是 3D 的,为了追求透明光影效果,通常都会使用到 Alpha-Blending 技术。下面,我们将谈论什么是 Alpha-Blending 技术并简单介绍 Alpha-Blending 技术的具体算法。

  所谓 Alpha-Blending,其实就是按照“Alpha”混合向量的值来混合源像素和目标像素。为了便于理解,我们就从两个像素间的 Alpha-Blending 过程谈起吧。

  第一步,先把源像素和目标像素的 RGB 三个颜色分量分离,然后把源像素的三个颜色分量分别乘上 Alpha 的值,并把目标像素的三个颜色分量分别乘上 Alpha 的反值,接下来把结果按对应颜色分量相加,再对最后求得的每个分量结果除以 Alpha 的最大值(通常这一步都是用移位来完成,这亦是 Alpha 的最大值为何总是二的幂的原因),最后把三个颜色分量重新合成为一个像素输出。

  在这个过程中,为了分离像素中的 RGB 三个颜色分量,我们一般会使用掩膜的方法。至于具体的三个掩膜值:RMask、GMask 和 BMask,可以从 DirectDraw 中的 DDPixelFormat 返回得到(当然,你也可以根据自己的需要做各种灵活处理)。

  在下面给出的说明性例程中,我们假设 RMask、GMask 和 BMask 已经存放的是 RGB 三个颜色分量的位掩膜值,Alpha 的最大值为 256,而 source 和 dest 是指向源像素和目标像素的指针。

int ialpha = 256 - *alpha; // Alpha 的反值

*dest = (RMask &amp; (((*source &amp; RMask) * *alpha +
(*dest &amp; RMask) * ialpha) >>8)) |
(GMask &amp; (((*source &amp; GMask) * *alpha +
(*dest &amp; GMask) * ialpha) >>8)) |
(BMask &amp; (((*source &amp; BMask) * *alpha +
(*dest &amp; BMask) * ialpha) >>8));

  终于明白什么是 Alpha-Blending 了吧?很简单不是,快去编程一试吧
 
这么说,Alpha也是象素级的操作么?但是它怎么速度那么快呢?
 
to Celestial dog:>只要是和图像有关的问题,卷姐就能帮你搞定!!
卷姐是不行的;卷哥倒是可以帮他搞定!

to crazycock:
我看你想累死我!我还是去跳楼好了!

<问:SelectClipRgn是一个函数吗?操作的对象是怎么产生的?>
SelectClipRgn,你就不会去看看帮助?或者看看这里我的使用:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=639148

<问:我需要的是颜色的逐渐变化,不是高斯模糊,是地地道道的羽化,不要其他替代的方法,
能做到吗?>
这个世界还有什么做不到么?
说穿了,羽化不就是名字好听么?其实就是平滑或者柔化或者模糊处理;
看看我发给你的好例子!

<Alpha通道是怎么样一个概念,我心里怎么也想不明白,有没有这方面的资料可以参考。>
看看我给你的例子!

 
推荐给你一个老外的极酷的图象处理站点:

www.efg2.com

记得有事没事多去转转!
 
让我继续研究一下,要是还有问题,呵呵~卷兄,不要说我搞恐怖活动呀~~~~~~
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
911
DelphiTeacher的专栏
D
后退
顶部