ImageVerifierCode 换一换
格式:PDF , 页数:4 ,大小:206.87KB ,
资源ID:6295978      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6295978.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字图像处理常见问题及编程技巧汇编.pdf)为本站会员(HR专家)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数字图像处理常见问题及编程技巧汇编.pdf

1、图像处理编程中常遇的一些问题及编程技巧 1. 在一个按钮上绘制一个带有填充色的矩形框 RECT rect CButton* pButton=(CButton*)GetDlgItem(ID_YOURBUTTON) pButtonGetClientRect(&rect)/获得按钮的矩形区域 CDC* pDC=pButtonGetDC()/使用按钮的设备上下文 CBrush* pRedBrush=new CBrush pRedBrushCreateSolidBrush(RGB(255,0,0) CGdiObject* pOldBrush=pDCSelectObject(pRedBrush) pDCF

2、illRectangle(&rect) pDCSelectObject(pOldBrush) delete pRedBrush 2. 用 C+实现把一个十进制数转换为一个十六进制数 /将十进制整数转换成十六进制整数 int nDecNum = 100/需要转换的数值 int nHexNum nHexNum = nDecNum/10*16 + nDecNum%10 /将十进制整数转换成十六进制字符 int nDecNum = 100 CString strHex strHex.Format(“%x“,nDecNum) /转换后的字符串为 strHex. 3. 通过对话框加载一幅上面有不同标志的图

3、片,通过鼠标用直线连接两个任意不同的标志 并实时的清除 在 OnPaint 里画图,在 mouse消息处理函数里画线,要清除的地方 call 一下 invalidate。 4. 修改文档界面的默认背景色 Windows 向窗口发送一个 WM_ERASEBKGND 消息通知该窗口擦除背景,可以使用 ClassWizard 重载该消息的缺省处理程序来擦除背景(实际是画),并返回 TRUE 以防止 Windows 擦除窗口。具体程序如下: BOOL CSampleView : : OnEraseBkgnd (CDC* pDC) / Create a pruple brush. CBrush Brus

4、h (RGB (128, 0 , 128) ) / Select the brush into the device context . CBrush* pOldBrush = pDCSelcetObject (&brush) / Get the area that neds to be erased . CRect reClip pDCGetCilpBox (&rcClip) /Paint the area. pDC PatBlt (rcClip.left , rcClip.top , rcClip.Width ( ) , rcClip.Height( ) , PATCOPY ) /Unse

5、lect brush out of device context .pDCSelectObject (pOldBrush ) / Return nonzero to half fruther processing . return TRUE 5. 将子窗口置于父窗口的中心位置 首先,调用父窗口的GetWindowRect 函数,得到它在屏幕上的位置及大小;然后调用子 窗口的 GetWindowRect 函数,得到它的大小;最后计算出子窗口位置,调用子窗口的 MoveWindow函数。 6. 在已知二维数组的情况下,将点连成光滑的曲线 采用 CDC 中的贝塞尔曲线函数,BOOL PolyBezi

6、er( const POINT* lpPoints, int nCount ) 7. 在处理基于视频的时间序列图像时,除了采用建立线程的方法外,还可使用定时器的方 法 设置定时器: 首先告诉 WINDOWS 一个时间间隔,然后 WINDOWS 以此时间间隔周期性触发程序。 通常有两种方法来实现:发送WM_TIMER 消息和调用应用程序定义的回调函数。 1) 用WM_TIMER 来设置定时器 UINT_PTR SetTimer( HWND hWnd, / 窗口句柄 UINT_PTR nIDEvent, / 定时器 ID,多个定时器时,可以通过该 ID 判断是哪个定时器 UINT uElapse,

7、 / 时间间隔,单位为毫秒 TIMERPROC lpTimerFunc / 回调函数 ) 例如: SetTimer(m_hWnd,1,1000,NULL) /一个 1 秒触发一次的定时器。 在 MFC 程序中 SetTimer 被封装在 CWnd类中,调用就不用指定窗口句柄了,例如: UINT SetTimer(1,100,NUL) / 函数返回值就是第一个参数值1,表示此定时器的 ID号 第二个参数表示要等待 100毫 秒时间再重新处理一次 第三个参数在这种方法中一般用 NUL。 2) 调用回调函数 首先写一个如下格式的回调函数 void CALLBACK TimerProc(HWND hW

8、nd,UINT nMsg,UINT nTimerid,DWORD dwTime) 然后再用 SetTimer(1,100,TimerProc)函数来建一个定时器,第三个参数就是回调函数地 址。 取消定时器: 调用 KillTimer 来取消定时,KillTimer 的原型 BOOL KillTimer( HWND hWnd, / 窗口句柄 UINT_PTR uIDEvent / ID ) 在 MFC 程序中可以直接调用KillTimer(int nIDEvent)来取消定时器。8. 内存的快速初始化和拷贝 用 memset()函数可以对一块连续内存进行初始化,memcpy()函数可以将一块连续

9、 内存的数据拷贝到另一块连续内存中。 例如 memset(m_pImgDataOut, 0, sizeof(int)*m_imgWidthOut*m_imgHeightOut)语句将 m_pImgDataOut指针指向的一块连续int类型的内存初始化为0。 而memcpy(m_pImgDataOut, buf, Imgsize)语句可以将 buf指针指向的一块连续内存的数据快速拷贝到 m_pImgDataOut 指 针指向的一块连续内存中。 9. avi 文件中的数据格式 AVI 中每一帧采用了 Bitmap 头格式,但是数据都是编过码的,与 bmp 文件数据是不一 样的,因为 bmp数据没有

10、压缩;AVI格式没有规定具体的编码(codec)和解码(decode), 当用户使用的播放器不知道用什么 codec 的时候会提醒下载;在每一帧 decode 后,即显示 之前时才能算是一个bmp文件。 10. 图像高斯平滑后可以较好的保持图像边缘 高斯平滑就是高斯函数和图像函数的卷积运算,时域卷积就是频域乘法,数字图像经过 频域变换后得到的图像,实际是图像信号变换到频域后的函数以图像形式表示出来, 其低频 部分极接近原点部分对应于图像平滑变化不大的地方,如图像的背景之类,而高频部分对应 于图像变化剧烈的地方,如图像的边缘。 11. 在分析基于视频的图像序列时,由于图像受亮度影响较大,去除背景

11、时若直接把背景图 和带有目标的图片做差再根据结果设置阈值效果不好,此时可考虑采用下述方法 若只考虑图像的亮度影响,可对背景图和目标图都减去各自的均值,在得到的两个图像 上再进行求差,差图像中绝对值比较大的就应该是目标所在位置; 还可以假设图像符合正态 分布,把目标图和背景图调节成同均值同方差的,也可以消除亮度影响。 12. 基于视频流的运动目标提取时,阈值化后得到差分的二值图像里面有很多噪声,而且目 标物体并不是一个大的连通域,除了腐蚀膨胀的方法去除噪声,还可考虑其它算法 例如用分水岭算法将目标分割成许多闭合的区域,然后根据其他信息进行融合,一般可 以得到完整的目标。 13. 在进行图像处理时

12、,有时仅需要对图像中的某一个区域进行处理,若用常规的方法响应 鼠标左键按下、放开和鼠标移动的消息,编程相对比较复杂。此时可以用 MFC 类库中的 CRectTracker 类来获得操作区域 具体用法如下: 首先,在 View类头文件中声明一个对象 CRectTracker RectTracker; 然后,在OnDraw()函数中加入下面的语句 RectTracker.Draw(pDC); 最后,在响应鼠标左键按下消息处理函数 OnLButtonDown()中加入语句 if (RectTracker.TrackRubberBand(this,point,TRUE) Invalidate(); 由

13、此,便可用 RectTracker 的成员变量 m_rect 获得所选的区域。VC 调试中一些常见的错误信息及解决方法: 1、调试时出现 LIBCD.lib(crt0.obj) : eror LNK2001: unresolved external symbol _main错误 原因:需要 MFC 支持的程序需要用 win32 Application来生成,如果用 win32 的控制台程序 就会出现上面的错误信息。 2、eror C2018: unknown character 0xa1 原因:输入了不可见的非法字符,把那一行前后的代码删掉重写一遍就OK 3、 eror C2018: unkn

14、own character 0xa3与 eror C2018: unknown character 0xbb常常同时出现 原因:报错的行有中文字符或标点 4、fatal eror C1010: unexpected end of file while looking for precompiled header directive 原因:寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include “stdafx.h“) 5、eror C2011: C: class typeredefinition 原因:类“C”重定义。 6、eror C2018: unknown charac

15、ter 0xa3 原因:不认识的字符0xa3。(一般是汉字或中文标点符号) 7、LINK : fatal eror LNK1168: cannot open Debug/P1.exe for writing 连接错误:不能打开 P1.exe文件,以改写内容。(一般是 P1.Exe还在运行,未关闭) 8、eror LNK2001: unresolved external symbol “public: virtual _ _thiscall C:C(void)“ 连接时发现没有实现的外部符号(变量、函数等)。 9、fatal eror C1010 unexpected end of file while looking for precompiled header 没加入预编译头 #include

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报