cimg0384解压密码类和CDIb类一样吗?

[转载][转]七大图像库
http://zhengzhaohui520./blog/static//
七大图像库的使用感受:OpenCV/FreeImage/LeadTools/ImageStone/GIMP/CImg/CxImage
对OpenCV的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法;然后将图像格式和矩阵运算,然后将各个算法的实现函数。我用它来做了一个Harris角点检测器和Canny边缘检测器,总共就花了一个小时(第一次用OpenCV)。而且该库显示图像极其方便,两句话就可以。但该库似乎不大稳定,对32F和16S、8U的图像数据支持上
bug重重。我用cvFilter2D函数进行线性滤波,屡屡出错,后来一查原来是大bug。后来用cvmGet来取矩阵元素也是频繁出错,仔细检查了N
遍确保程序没问题之后在yahoogroup上找到答案:仍然是bug。。。但好歹该库是开放的,所以自己可以修改;而且支持CVS。另外该库用的是
IPL矩阵库,速度奇快~~
对CxImage考察的印象:该开发包完全开放源代码,图像封装为一个类,功能极为强大,与Windows、MFC支持极好,支持图像的多种操作(线性滤波、中值滤波、直方图操作、旋转缩放、区域选取、阈值处理、膨胀腐蚀、alpha混合等等),支持从文件、内存或者win32api定义的位图图像格式中读取图像,支持将图像显示在任意窗口,功能可谓很强大了,而且对像素的操作很方便,另外还有一个界面很强的demo,可以直接在上面进行二次开发,推荐使用!
缺点:里面的子库很多,用起来可能较麻烦;而且感觉速度稍慢,不如后面提到的freeimage,但功能真的十分强大啊!
使用方法:
//加载图像 实现转换成BMP图像进行处理 参数为图片路径和类型 0代表BMP 1代表JPG
BOOL Load(LPCTSTR ImagePath DWORD dwType);
//保存图像 参数为图片路径和类型 0代表BMP 1代表JPG
BOOL Save(LPCTSTR ImagePath DWORD dwType);
//获取图像的宽度
DWORD GetWidth();
//获取图像的高度
DWORD GetHeight();
//获取图像的存储行字节数
DWORD GetLineBytes();
//获取每像素的位数
short GetBpp();
//位图是否为空
BOOL IsEmpty();
//获取图像数据首地址
void *GetImageAddress();
//获取图像数据大小
DWORD GetImageDataSize();
//位图信息骰
BITMAPINFOHEADER GetBitMapInfoHeader();
//位图调色板
RGBQUAD* GetPalette()
RGBQUAD GetPaletteColor(BYTE index);
BOOL GetPaletteColor(BYTE i BYTE* r BYTE* g BYTE* b);
DWORD GetPaletteSize();
//更新位图数据 在对位图数据进行更改后必须调用此函数
BOOL UpdateData(DWORD dwWidth DWORD dwHeight short dwBpp DWORD
dwSize BYTE *lpData);
//位图分割 输入左上角及右下角坐标即可实现保存
BOOL SaveRectImage(LPCTSTR strSaveName DWORD lPos DWORD uPos DWORD
rPos DWORD dPos DWORD dwType);
BOOL SaveRectImage(LPCTSTR strSaveName CRect rect DWORD
&BOOL GetImage(BYTE *lpBuffer DWORD &dwSize
CRect rect);
BOOL GetImage(BYTE *lpBuffer DWORD &dwSize DWORD lPos DWORD
uPos DWORD rPos DWORD dPos);
//返回位图类型 0代表bmp 1代表jpg
int GetImageType();
//图像显示
//传入参数为显示区域左上顶点及显示尺寸 原图起点及尺寸
void Draw(CDC *pDC CPoint ptDest CSize szDest CPoint ptSource CSize
szSource);
//传入参数为放大倍数及显示区域左上顶点 对副图像进行放缩
void Draw(CDC *pDC CPoint ptOrigin float m_fZoom = 1.0f);
CImg:就一个.h文件所以用起来很简明,但感觉功能上不如CxImage。可以与CxImage配合使用,因为CImg提供了基于lapack
的矩阵运算函数和完善的线性滤波卷积函数,同时CImg做像素运算还是很方便的。另外,独有Display类可以方便的实现各种显示,包括显示图像、打字、画线等等。还有,该库有个基于光流的多尺度图像配准例子,很好。
LEADTOOLS:LEAD Technologies
是一个拥有九年多开发数字图形技术历史的公司,他专为程序开发者提供软件开发工具包。他已经为微软等公司提供了很多图形图象技术。这个软件包是该公司开发的开发工具的集合,包括占线帮助,Lead
API、C++ 类库、ActiveX 控件、VCLs 和一些实例原代码等。这个软件包是开发工具的集合包括占线帮助,Lead
API、C++ 类库、ActiveX 控件、VCLs 和一些实例原代码等。
ImageStone:是一套功能强大的C++图像处理库,它可以在多个平台之间移植。功能包括:读写图像文件(JPG,GIF,PNG,TIFF,TGA...),显示,柱状图分析,undo/redo支持,超过100种预定义的特效等。&&&&&
下载地址:
GIMP是一个免费的、分布式的图片润饰、图象制作和处理软件,内含几乎所有图象处理所需的功能,号称Linux下的PhotoShop。GIMP在Linux系统推出时就风靡了许多绘图爱好者的喜爱,它的接口相当轻巧,但其功能却不输于专业的绘图软件;它提供了各种的影像处理工具、滤镜,还有许多的组件模块,对于要制作一个又酷又炫的网页按钮或网站Logo来说是一个非常方便好用的绘图软件,因为它也提供了许多的组件模块,你只要稍加修改一下,便可制作出一个属于你的网页按钮或网站Logo。
如今推出了For Windows版本,还不赶快试试...
注:需要安装GTK+环境包才能正常安装.&&&&&&&&&&&&&
下载地址:
FreeImage:C语言的体系,大量使用指针运算速度可以保证,内含先进的多种插值算法。另外独有的支持meta
exif信息的读取。该库最大的特点就是比较简练,只把重点放在对各种格式图像的读取写入支持上,没有显示部分,实际编程的时候还是需要调用API函数进行显示
通用图像类算法扩充库。这是一个比较另类的图像库,它本身并不提供对图像对象的封装,只以类似插件的形式为您提供图像处理算法的封装和进度显示,而图像对象的封装则需由用户来提供。本图像库平台无关,理论上它可以应用于任何已有的C++图像类上。
使用方法:
为了使用本图像库,您必须对手头的图像类做一些简单的修改(考虑到效率的因素,我并没有提供一个虚接口供大家继承,而是通过让用户自己修改代码来实现之。):
  1.从现有图像类(如CxImage、CDib...)派生出FCObjImage(我想您的类也叫这个名字的概率应该比火星有水的概率要低^-^)。
  2.您必须在FCObjImage类中实现以下函数(大多是很简单的取属性操作):
FCObjImage () &默认构造函数
FCObjImage (const FCObjImage & img)
&拷贝构造函数
FCObjImage & operator= (const FCObjImage & imgSrc)
BOOL IsValidImage () const &本图像对象是否有效
UINT16 ColorBits () const
&图像的颜色位数(1,4,8,16,24,32)
DWORD GetPitch () const &图像每行字节数
BYTE * GetBits (int iLine = 0) const &取得第 iLine
行指针, 左上角为(0,0), 自上而下
BYTE * GetBits (int x, int y) const &取得 (x,y)
点的指针, 左上角为(0,0), 自上而下,自左而右
bool IsInside (int x, int y) const
&坐标(x,y)是否在图像内部
int Width () const &宽
int Height () const &高
BOOL Create (int iWidth, int iHeight, WORD wColorBit)
&创建一副空图像
static void fooCopyPalette (FCObjImage & DibDest, const
FCObjImage & DibSrc) &&=8bit图像拷贝调色板
  3.现在,进入最重要的一环,在FCObjImage类中添加方法:
  void SinglePixelProcessProc (FCSinglePixelProcessBase &
PixelProcessor, FCObjProgress * progress = NULL)
  并把下面的实现代码拷到FCObjImage类中:
//================================================================void&
FCObjImage::SinglePixelProcessProc (FCSinglePixelProcessBase &
PixelProcessor, FCObjProgress * progress)
(!PixelProcessor.ValidateColorBits (this))
计算处理区域
RECT&&rcImg =
{0,0,Width(),Height()}, rcBlock, rcD
(PixelProcessor.GetProcessRect() == NULL)
::CopyRect (&rcBlock, &rcImg) ;
::CopyRect (&rcBlock, PixelProcessor.GetProcessRect())
(::IntersectRect (&rcDest, &rcImg, &rcBlock) ==
// 处理区域为空
处理前准备工作
nSpan = ColorBits() / 8 ; // 每象素字节数1, 2, 3, 4
PixelProcessor.OnEnterProcess (this, rcDest) ;
遍历处理区域像素
&&& for (int
y=rcDest. y & rcDest. y++)
BYTE&* pPixel = GetBits (rcDest.left, y)
for (int x=rcDest. x & rcDest. x++, pPixel +=
&&&&&&&&&&&
PixelProcessor.ProcessPixel (this, x, y, pPixel) ;
if (progress != NULL)
&&&&&&&&&&&
progress-&SetProgress (y * 100 / Height()) ;
PixelProcessor.OnLeaveProcess (this) ;
}//================================================================
4.修改库里的PixelProcessor.cpp文件,把FCObjImage所在的.h文件包含进去。
  现在,您就可以通过如下方法调用本库
  imgTest.SinglePixelProcessProc (FCPixelGrayscale()) ;
  imgTest.SinglePixelProcessProc (FCPixelInvert()) ;
  ......
附加:MVTec&HALCON&是世界上最全能的机器视觉软件&(配套教材:机器视觉算法与应用)
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。程序通过MFC的CDIB类提供接口 这句话是什么意思?_百度知道
程序通过MFC的CDIB类提供接口 这句话是什么意思?
提问者采纳
就是可以通过CDIB类的成员函数来与程序进行交互。
意思就是CDIB类的函数,我都能使用,对吗?
是的,但是先需要先获取CDIB类对象或对象指针后方可使用。
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(724)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_081071',
blogTitle:'\t\t位图操作类CDib 源代码(转)',
blogAbstract:'#include &stdafx.h&#include &DIB.h&IMPLEMENT_DYNAMIC(CDIB, CGdiObject);////////////////////////////////////////////////////////////////////////// CDIB//// 设备无关位图类(版本1.0)//// 完成功能://&&&&
设备无关位图的创建,显示,读入,保存,捕捉位图//// 版本所有: 罗隽,曾志////////////////////////////////////////////////////////////////////////',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:3,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}程序通过mfc的cdib类提供接口是什么意思?_百度知道
程序通过mfc的cdib类提供接口是什么意思?
我有更好的答案
就是可以使用 cdib类里的某个指定函数
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 cimg0384解压密码 的文章

 

随机推荐