图像的填充处理 开发环境VC2008+WinXP。1、对一个256色的Bitmap做填充处理,用到了哪些函数?2、需要获取连通区域吗,怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是将鼠标时,将鼠标点的色码及与其连通的相同色码,填充为指定的色码。和windows画图的“用颜色填充”功能一样。 是的啊。我现在是用一个递归算法找出连通区域的CRgn,然后用FillRegion来填充,是GDI+的。但是这样太慢了啊,怎样才能提高效率呢?为什么画图的就这么快呢。 弱弱滴问一句,FloodFill不能用么~ FloodFill没用过,明天试试,谢谢。 看看opencv的cvDrawContours函数吧 我用的是Graphics,按这样调用ExtFloodFill(graphics->GetHDC(), ptMouse.x, ptMouse.y, penColor.ToCOLORREF(), FLOODFILLBORDER);是返回失败的,怎么办啊 八领域搜索算法http://www.docin.com/p-42430337.html 我现在就差不多是这样的,但是速度很慢啊。和mspaint的“用颜色填充”完全不是一个数量级的。另外,FloodFill该怎么传入HDC呢,我现在是一个Graphics(Image *)的数据。 各位XDJM们,还有好办法吗。FloodFill的HDC参数必须是dc的吗? 有必要用递归吗??你就搜索你点的位置的8或4邻域的联通区域,然后把邻域的像素点设置成你设定的颜色就可以了。很快的。FloodFill也是可以的,你绘图不用DC怎么绘? 不是直接在dc上做的处理,大概代码是这样的:Bitmap *pBitmap;... // 获取PixelFormat32bppARGB的图像Graphics graphics(pBitmap);graphics.SetInterpolationMode(InterpolationModeNearestNeighbor);graphics.SetSmoothingMode(SmoothingModeHighSpeed);graphics.TranslateTransform(left, top);pObj->Draw(&graphics); // 这里就是需要填充的处理函数 填充算法是图形算法里面比较复杂的,CRgn只能很小的区域,不然慢的厉害,大了几乎无法忍受。要想快方法也有,不过复杂性就高多了。找一块空闲的内存区域,全部填充背景色,然后用前景色将CRgn的边界画进去。然后自己判断是区域内还是区域外,用漫泛法填充,或者用代数边界法,具体算法找计算机图形学的书就有。填充完将处理好的内存copy回去就可以了。 我的图形大小也不是很大,具体跟踪过,主要就是慢在产生CRgn这一步(用递归和堆栈都一样),填充过程还是快的。所以现在的问题就是,一是优化生成CRgn的过程,二是更改填充过程,希望各位能帮帮忙... 大家是用什么办法做的呢,就是对一个Bmp文件做连通区域的填充,需同时考虑在一个选择框的范围内处理。谢谢啦。 控件的重绘问题 VC中打不开dsw文件 急!水晶报表分页小计如何设置 新手请教,简单问题 (高手请注意)谁能给在下提供一个利用ODBC连接Oracle数据库的例子? 一些问题。望各位能给予指教。 如何修改TREECTRL中滚动条的颜色?请高手帮忙。 求图像模糊算法 有什么方法用程序修改IE的主页? 模态和非模态的区别 为什么有些MFC的工程不能设置成Debug模式 TreeView控件
和windows画图的“用颜色填充”功能一样。
我现在是用一个递归算法找出连通区域的CRgn,然后用FillRegion来填充,是GDI+的。
但是这样太慢了啊,怎样才能提高效率呢?
为什么画图的就这么快呢。
我现在就差不多是这样的,但是速度很慢啊。
和mspaint的“用颜色填充”完全不是一个数量级的。另外,FloodFill该怎么传入HDC呢,我现在是一个Graphics(Image *)的数据。
FloodFill的HDC参数必须是dc的吗?
Bitmap *pBitmap;
... // 获取PixelFormat32bppARGB的图像
Graphics graphics(pBitmap);
graphics.SetInterpolationMode(InterpolationModeNearestNeighbor);
graphics.SetSmoothingMode(SmoothingModeHighSpeed);
graphics.TranslateTransform(left, top);
pObj->Draw(&graphics); // 这里就是需要填充的处理函数
要想快方法也有,不过复杂性就高多了。
找一块空闲的内存区域,全部填充背景色,然后用前景色将CRgn的边界画进去。然后自己判断是区域内还是区域外,用漫泛法填充,或者用代数边界法,具体算法找计算机图形学的书就有。
填充完将处理好的内存copy回去就可以了。
所以现在的问题就是,一是优化生成CRgn的过程,二是更改填充过程,希望各位能帮帮忙...
谢谢啦。