﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Make Oneself More Strong</title><link>http://www.cppblog.com/mcs51a/</link><description>mcs51a( 高兴就写点:-),不高兴就不写 )</description><language>zh-cn</language><lastBuildDate>Thu, 23 Apr 2026 04:08:33 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 04:08:33 GMT</pubDate><ttl>60</ttl><item><title>杂感20130709</title><link>http://www.cppblog.com/mcs51a/archive/2013/07/09/201641.html</link><dc:creator>mcs51a</dc:creator><author>mcs51a</author><pubDate>Tue, 09 Jul 2013 08:36:00 GMT</pubDate><guid>http://www.cppblog.com/mcs51a/archive/2013/07/09/201641.html</guid><wfw:comment>http://www.cppblog.com/mcs51a/comments/201641.html</wfw:comment><comments>http://www.cppblog.com/mcs51a/archive/2013/07/09/201641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mcs51a/comments/commentRss/201641.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mcs51a/services/trackbacks/201641.html</trackback:ping><description><![CDATA[DirectUI 控件，具有简单，可扩展性好等的特点，但是实际开发的时候，遇到复杂的控件，还是喜欢WIN32窗口句柄模式写控件，原因有如下几个<br />1、消息队列具有线程的安全性。<br />2、不需要考虑FOCUS，SIZE，MOVE，PAINT，MOUSE，KEY这些框架消息的DISPATCH<br />3、和已经有的MFC，WIN32代码融合的时间比较少。<br /><img src ="http://www.cppblog.com/mcs51a/aggbug/201641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mcs51a/" target="_blank">mcs51a</a> 2013-07-09 16:36 <a href="http://www.cppblog.com/mcs51a/archive/2013/07/09/201641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dark Channel Prior去雾效果</title><link>http://www.cppblog.com/mcs51a/archive/2013/04/16/199492.html</link><dc:creator>mcs51a</dc:creator><author>mcs51a</author><pubDate>Tue, 16 Apr 2013 11:39:00 GMT</pubDate><guid>http://www.cppblog.com/mcs51a/archive/2013/04/16/199492.html</guid><wfw:comment>http://www.cppblog.com/mcs51a/comments/199492.html</wfw:comment><comments>http://www.cppblog.com/mcs51a/archive/2013/04/16/199492.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mcs51a/comments/commentRss/199492.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mcs51a/services/trackbacks/199492.html</trackback:ping><description><![CDATA[<br />Dark Channel Prior去雾的算法，下载了个现成的测试一下，果然效果不错，效果如下。<br /><br />百度文库里的文档 <div>http://wenku.baidu.com/view/eae99905bed5b9f3f90f1cfd.html</div><br /><br />测试图像，<br />&nbsp; <br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/mcs51a/haze.jpg" height="262" width="350" /><br /><br />结果图像<br /><img alt="" src="http://www.cppblog.com/images/cppblog_com/mcs51a/untitled2.JPG" height="263" width="352" /><br /> <div><embed id="ciba_grabword_plugin" type="application/ciba-grabword-plugin" height="0" hidden="true" width="0"></div><img src ="http://www.cppblog.com/mcs51a/aggbug/199492.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mcs51a/" target="_blank">mcs51a</a> 2013-04-16 19:39 <a href="http://www.cppblog.com/mcs51a/archive/2013/04/16/199492.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图像形态学膨胀的结构分解opencv实验 </title><link>http://www.cppblog.com/mcs51a/archive/2013/02/21/197971.html</link><dc:creator>mcs51a</dc:creator><author>mcs51a</author><pubDate>Thu, 21 Feb 2013 02:39:00 GMT</pubDate><guid>http://www.cppblog.com/mcs51a/archive/2013/02/21/197971.html</guid><wfw:comment>http://www.cppblog.com/mcs51a/comments/197971.html</wfw:comment><comments>http://www.cppblog.com/mcs51a/archive/2013/02/21/197971.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mcs51a/comments/commentRss/197971.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mcs51a/services/trackbacks/197971.html</trackback:ping><description><![CDATA[<p>宽度W,高度H 的图像，做膨胀操作，如果膨胀的结构元素structure element，大小为kw,kh，那么就需要做W*H*kw*kh次运算，运算量比较大。 <br /><br /><span style="color: #0066ff">根据图像形态学的理论，膨胀满足结合律，即<img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/mcs51a/dilation_satisfies.png" />，<font color="#0066ff">B和C为结构元素</font>。假设一个结构元素S可以表示为两个结构元素B和C的膨胀，即S=B&#8853;C，则A&#8853;S=A&#8853;(B&#8853;C)=(A&#8853;B)&#8853;C，换言之，用S膨胀A等同于用B先膨胀A，再用C膨胀前面的结果。我们称S能够分解成B和C两个结构元素。结合律很重要，因为计算膨胀所需要的时间正比于结构元素中的非零像素的个数。通过上述推导，分解结构元素，然后再分别用子结构元素进行膨胀操作往往会实现很客观的速度的增长。<br /><br /><span style="color: #0066ff">同样，腐蚀也可以做结构分解，腐蚀满足公式 <img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/mcs51a/erosion_satisfies.png" width="243" height="21" />，B和C为结构元素，同样如果<font color="#0066ff">一个结构元素S可以表示为两个结构元素B和C的膨胀，即S=B&#8853;C，那么<font color="#0066ff">用S腐蚀A等同于用B先腐蚀A，再用C腐蚀前面的结果</font></font>。公式推导省略。<br /><br /></span>图像形态学膨胀和腐蚀介绍，可见<br />&nbsp;&nbsp;&nbsp; <a href="http://en.wikipedia.org/wiki/Erosion_(morphology">http://en.wikipedia.org/wiki/Erosion_(morphology</a>)<br />&nbsp;&nbsp;&nbsp; <a href="http://en.wikipedia.org/wiki/Dilation_(morphology">http://en.wikipedia.org/wiki/Dilation_(morphology</a>)<br />&nbsp;&nbsp; <br /><br /></span><span style="color: ">做结构分解后的运算量为W*H*（kw+kh）</span><span style="color: "><br /></span><span style="color: #0066ff"><br /><br /></span><span style="color: ">代码如下</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">cv.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">highgui.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdio.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">**</span><span style="color: #000000">&nbsp;argv)<br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img id="Codehighlighter1_90_1840_Open_Image" onclick="this.style.display='none'; Codehighlighter1_90_1840_Open_Text.style.display='none'; Codehighlighter1_90_1840_Closed_Image.style.display='inline'; Codehighlighter1_90_1840_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_90_1840_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_90_1840_Closed_Text.style.display='none'; Codehighlighter1_90_1840_Open_Image.style.display='inline'; Codehighlighter1_90_1840_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_90_1840_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_90_1840_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_105_149_Open_Image" onclick="this.style.display='none'; Codehighlighter1_105_149_Open_Text.style.display='none'; Codehighlighter1_105_149_Closed_Image.style.display='inline'; Codehighlighter1_105_149_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_105_149_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_105_149_Closed_Text.style.display='none'; Codehighlighter1_105_149_Open_Image.style.display='inline'; Codehighlighter1_105_149_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(argc</span><span style="color: #000000">&lt;</span><span style="color: #000000">2</span><span style="color: #000000">)&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_105_149_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_105_149_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">has&nbsp;no&nbsp;param\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /></span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;IplConvKernel&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">element1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cvCreateStructuringElementEx(&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">25</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;CV_SHAPE_RECT,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br /></span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;IplConvKernel&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">element2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cvCreateStructuringElementEx(&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;CV_SHAPE_RECT,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br /></span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;IplConvKernel&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">element3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cvCreateStructuringElementEx(&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">25</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;CV_SHAPE_RECT,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br /></span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;IplImage</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;src</span><span style="color: #000000">=</span><span style="color: #000000">cvLoadImage(argv[</span><span style="color: #000000">1</span><span style="color: #000000">],</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;<br /></span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /></span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;src</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;NULL)<br /></span><span style="color: #008080">21</span><span style="color: #000000"><img id="Codehighlighter1_483_1784_Open_Image" onclick="this.style.display='none'; Codehighlighter1_483_1784_Open_Text.style.display='none'; Codehighlighter1_483_1784_Closed_Image.style.display='inline'; Codehighlighter1_483_1784_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_483_1784_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_483_1784_Closed_Text.style.display='none'; Codehighlighter1_483_1784_Open_Image.style.display='inline'; Codehighlighter1_483_1784_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_483_1784_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_483_1784_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IplImage</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;img&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvCvtColor(src,img,CV_BGR2GRAY);<br /></span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvReleaseImage(</span><span style="color: #000000">&amp;</span><span style="color: #000000">src);<br /></span><span style="color: #008080">26</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">27</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">28</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IplImage</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;tmp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">29</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvDilate(&nbsp;img,&nbsp;tmp,&nbsp;element1,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">30</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">31</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IplImage</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;dst1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">32</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvDilate(&nbsp;tmp,&nbsp;dst1,&nbsp;element2,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">33</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">34</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IplImage</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;dst2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">36</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvDilate(&nbsp;img,&nbsp;dst2,&nbsp;element3,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">37</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">38</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IplImage</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;diff&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">39</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvSub(dst2,dst1,tmp,NULL);<br /></span><span style="color: #008080">40</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvEqualizeHist(&nbsp;tmp,&nbsp;diff);<br /></span><span style="color: #008080">41</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvReleaseImage(</span><span style="color: #000000">&amp;</span><span style="color: #000000">tmp);<br /></span><span style="color: #008080">42</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">43</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;noZeroCount</span><span style="color: #000000">=</span><span style="color: #000000">cvCountNonZero(diff);<br /></span><span style="color: #008080">44</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">no&nbsp;zerocount&nbsp;%d\n</span><span style="color: #000000">"</span><span style="color: #000000">,noZeroCount);<br /></span><span style="color: #008080">45</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">46</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">47</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvNamedWindow(</span><span style="color: #000000">"</span><span style="color: #000000">img</span><span style="color: #000000">"</span><span style="color: #000000">,CV_WINDOW_AUTOSIZE);<br /></span><span style="color: #008080">48</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvShowImage(</span><span style="color: #000000">"</span><span style="color: #000000">img</span><span style="color: #000000">"</span><span style="color: #000000">,img);<br /></span><span style="color: #008080">49</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvNamedWindow(</span><span style="color: #000000">"</span><span style="color: #000000">dst1</span><span style="color: #000000">"</span><span style="color: #000000">,CV_WINDOW_AUTOSIZE);<br /></span><span style="color: #008080">50</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvShowImage(</span><span style="color: #000000">"</span><span style="color: #000000">dst1</span><span style="color: #000000">"</span><span style="color: #000000">,dst1);<br /></span><span style="color: #008080">51</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvNamedWindow(</span><span style="color: #000000">"</span><span style="color: #000000">dst2</span><span style="color: #000000">"</span><span style="color: #000000">,CV_WINDOW_AUTOSIZE);<br /></span><span style="color: #008080">52</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvShowImage(</span><span style="color: #000000">"</span><span style="color: #000000">dst2</span><span style="color: #000000">"</span><span style="color: #000000">,dst2);<br /></span><span style="color: #008080">53</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvNamedWindow(</span><span style="color: #000000">"</span><span style="color: #000000">diff</span><span style="color: #000000">"</span><span style="color: #000000">,CV_WINDOW_AUTOSIZE);<br /></span><span style="color: #008080">54</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvShowImage(</span><span style="color: #000000">"</span><span style="color: #000000">diff</span><span style="color: #000000">"</span><span style="color: #000000">,diff);<br /></span><span style="color: #008080">55</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">56</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">57</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvWaitKey();<br /></span><span style="color: #008080">58</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvDestroyAllWindows();<br /></span><span style="color: #008080">59</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">60</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">61</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvReleaseImage(</span><span style="color: #000000">&amp;</span><span style="color: #000000">img);<br /></span><span style="color: #008080">62</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvReleaseImage(</span><span style="color: #000000">&amp;</span><span style="color: #000000">dst1);<br /></span><span style="color: #008080">63</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvReleaseImage(</span><span style="color: #000000">&amp;</span><span style="color: #000000">dst2);<br /></span><span style="color: #008080">64</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvReleaseImage(</span><span style="color: #000000">&amp;</span><span style="color: #000000">diff);<br /></span><span style="color: #008080">65</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">66</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvReleaseStructuringElement(</span><span style="color: #000000">&amp;</span><span style="color: #000000">element1);<br /></span><span style="color: #008080">67</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvReleaseStructuringElement(</span><span style="color: #000000">&amp;</span><span style="color: #000000">element2);<br /></span><span style="color: #008080">68</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvReleaseStructuringElement(</span><span style="color: #000000">&amp;</span><span style="color: #000000">element3);<br /></span><span style="color: #008080">69</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">70</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">71</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">72</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">73</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">74</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">75</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br /></span><span style="color: #008080">76</span><span style="color: #000000"><img id="Codehighlighter1_1793_1827_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1793_1827_Open_Text.style.display='none'; Codehighlighter1_1793_1827_Closed_Image.style.display='inline'; Codehighlighter1_1793_1827_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1793_1827_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1793_1827_Closed_Text.style.display='none'; Codehighlighter1_1793_1827_Open_Image.style.display='inline'; Codehighlighter1_1793_1827_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1793_1827_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_1793_1827_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">77</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">error,not&nbsp;load\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">78</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">79</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">80</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000">;<br /></span><span style="color: #008080">81</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span></div>
<p></span>&nbsp;</p>
<p>&nbsp;</p><img src ="http://www.cppblog.com/mcs51a/aggbug/197971.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mcs51a/" target="_blank">mcs51a</a> 2013-02-21 10:39 <a href="http://www.cppblog.com/mcs51a/archive/2013/02/21/197971.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>richedit中的GIF显示</title><link>http://www.cppblog.com/mcs51a/archive/2012/08/18/187558.html</link><dc:creator>mcs51a</dc:creator><author>mcs51a</author><pubDate>Fri, 17 Aug 2012 22:52:00 GMT</pubDate><guid>http://www.cppblog.com/mcs51a/archive/2012/08/18/187558.html</guid><wfw:comment>http://www.cppblog.com/mcs51a/comments/187558.html</wfw:comment><comments>http://www.cppblog.com/mcs51a/archive/2012/08/18/187558.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/mcs51a/comments/commentRss/187558.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mcs51a/services/trackbacks/187558.html</trackback:ping><description><![CDATA[代码下载如下<br />&nbsp; http://www.cppblog.com/Files/mcs51a/GifDisplayCtrl.rar <div><embed id="ciba_grabword_plugin" type="application/ciba-grabword-plugin" height="0" hidden="true" width="0"></div><img src ="http://www.cppblog.com/mcs51a/aggbug/187558.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mcs51a/" target="_blank">mcs51a</a> 2012-08-18 06:52 <a href="http://www.cppblog.com/mcs51a/archive/2012/08/18/187558.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【随想】对N项数据进行判断，生成两类不同结果，如何产生最后判断</title><link>http://www.cppblog.com/mcs51a/archive/2011/12/05/161459.html</link><dc:creator>mcs51a</dc:creator><author>mcs51a</author><pubDate>Sun, 04 Dec 2011 16:42:00 GMT</pubDate><guid>http://www.cppblog.com/mcs51a/archive/2011/12/05/161459.html</guid><wfw:comment>http://www.cppblog.com/mcs51a/comments/161459.html</wfw:comment><comments>http://www.cppblog.com/mcs51a/archive/2011/12/05/161459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mcs51a/comments/commentRss/161459.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mcs51a/services/trackbacks/161459.html</trackback:ping><description><![CDATA[对N项数据进行判断，生成N项结果，这些结果中有YES，也有NO，采用何种方法，产生最后结果。<br /><br />0. 努力使结果一致<br />&nbsp;&nbsp; 在判断之前，对N项数据过滤，看是否出现异常，去掉那些因为数据异常而产生的结果，努力使所有结果一致，全是YES或全是NO，当然这就困难了。<br /><br />1.单值判断<br />&nbsp; 1.1 严格判断，只要有一项结果为NO，就认为最后结果为NO。<br />&nbsp; 1.2 宽松判断，只要有一项结果为YES，就认为最后结果为YES。<br /><br />2. 对出现的两类结果次数进行比较，选择出现次数多的那项。<br /><br />3. 根据重要程度来判断。先数值化结果，使YES的值为1,NO的值为0。然后再根据数据的重要程度，定义一些数值，称为重要因子。每项数据产生的数值结果乘以对应的重要因子，再相加这些结果，得出的和值，与给定的阈值相比较，得出最后结果。<img src ="http://www.cppblog.com/mcs51a/aggbug/161459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mcs51a/" target="_blank">mcs51a</a> 2011-12-05 00:42 <a href="http://www.cppblog.com/mcs51a/archive/2011/12/05/161459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Skinlib 中CSkinDialog的代码分析</title><link>http://www.cppblog.com/mcs51a/archive/2011/06/07/148220.html</link><dc:creator>mcs51a</dc:creator><author>mcs51a</author><pubDate>Tue, 07 Jun 2011 10:07:00 GMT</pubDate><guid>http://www.cppblog.com/mcs51a/archive/2011/06/07/148220.html</guid><wfw:comment>http://www.cppblog.com/mcs51a/comments/148220.html</wfw:comment><comments>http://www.cppblog.com/mcs51a/archive/2011/06/07/148220.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mcs51a/comments/commentRss/148220.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mcs51a/services/trackbacks/148220.html</trackback:ping><description><![CDATA[SkinLib的代码简单明了，对于想学习和了解UI Skin的原理来说是合适的. 相关链接如下<br /><div>http://www.cppblog.com/netboy/archive/2009/02/15/73863.html</div><br />CSkinDialog 使用Hook,WndProc技术,重载原有绘制消息过程.<br />CSkinDialog的区域分为客户区域和非客户区域,CSkinDialog的非客户区域又被分为如下几个子区域,<br /><div>1.左边缘,m_nToLeft为窗口的左边缘长度.<br />2.右边缘,m_nToRight为右边缘的长度.<br />3.Caption区域,m_nToTop 为其高度,Caption 区域又可以分为<br /><div>&nbsp; 3.1.(0,0,m_nTopLeft,m_nToTop)<br />&nbsp; 3.2.标题区域 (m_nTopLeft,0,rcWnd.Width()-m_nTopRight,m_nToTop)<br />&nbsp; 3.3.close,max,min 按钮区域</div>4.下部边缘,m_nToBottom为下部边缘的高度<br /><br />根据配置文件,读取到相应的Skin,绘制上述Dialog几个子区域.<br />1.DrawBorder绘制左,右,下部边缘.<br />2.DrawCaption绘制Caption区域.</div><img src ="http://www.cppblog.com/mcs51a/aggbug/148220.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mcs51a/" target="_blank">mcs51a</a> 2011-06-07 18:07 <a href="http://www.cppblog.com/mcs51a/archive/2011/06/07/148220.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图像变形（image warping）的算法资源</title><link>http://www.cppblog.com/mcs51a/archive/2011/06/06/148160.html</link><dc:creator>mcs51a</dc:creator><author>mcs51a</author><pubDate>Mon, 06 Jun 2011 14:08:00 GMT</pubDate><guid>http://www.cppblog.com/mcs51a/archive/2011/06/06/148160.html</guid><wfw:comment>http://www.cppblog.com/mcs51a/comments/148160.html</wfw:comment><comments>http://www.cppblog.com/mcs51a/archive/2011/06/06/148160.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/mcs51a/comments/commentRss/148160.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mcs51a/services/trackbacks/148160.html</trackback:ping><description><![CDATA[Affine ，Perspective变形 资源很多，<br />可以查看OpenCV<br /><br />不规则变形<br />http://paulbourke.net/miscellaneous/imagewarp/<br /><br /><div>鼠标拉伸改变图像的<br /> <div>http://www.codeproject.com/KB/graphics/localimagewarper.aspx?q=warp</div> </div><br />Photoshop液化工具箱中向前变形工具<div>http://www.cnblogs.com/xiaotie/archive/2009/12/08/1619046.html</div><br /><img src ="http://www.cppblog.com/mcs51a/aggbug/148160.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mcs51a/" target="_blank">mcs51a</a> 2011-06-06 22:08 <a href="http://www.cppblog.com/mcs51a/archive/2011/06/06/148160.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Win32 中等待线程调用的结束</title><link>http://www.cppblog.com/mcs51a/archive/2011/02/16/140153.html</link><dc:creator>mcs51a</dc:creator><author>mcs51a</author><pubDate>Wed, 16 Feb 2011 06:00:00 GMT</pubDate><guid>http://www.cppblog.com/mcs51a/archive/2011/02/16/140153.html</guid><wfw:comment>http://www.cppblog.com/mcs51a/comments/140153.html</wfw:comment><comments>http://www.cppblog.com/mcs51a/archive/2011/02/16/140153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mcs51a/comments/commentRss/140153.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mcs51a/services/trackbacks/140153.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; <br>&nbsp;&nbsp; 如果在.net中一个线程等待另外一个线程的完成,可以使用System.Threading.Thread.Join, 在Win32 下的相应的等效代码&nbsp;&nbsp;&nbsp; <br>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">WaitForSingleObject(hThread,INFINITE);<br></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">CloseHandle(hThread);</span></div>
&nbsp;&nbsp;
Win32 中CreateThread出来的hThread属于整个Process,线程中的回调函数结束后,不会失效,只有调用者调用CloseHandle,才最后真正的释放系统中Thread 的资源.<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; 如果线程的回调函数已经结束,那么hThread 处于激活状态,WaitForSignleObject 便能获取到当前状态，成功返回;如果没有,WaitForSignleObject 便一直等待线程的回调结束. <br><br>&nbsp;&nbsp; 如果你想一个线程中等待另外一个线程回调结束的同时,进行消息MSG的分发,或者做其他的事情.例如主UI线程在等待工作线程完成的同时,需要更新UI上的进度条,这时可以让工作线程发送进度消息MSG给主UI线程,主UI线程接受到消息MSG更新UI.可以在主UI线程中使用MsgWaitForMultipleObjects函数达到这一效果,&nbsp; <br>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">MSG&nbsp;msg;<br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">BOOL&nbsp;bLoop</span><span style="color: #000000;">=</span><span style="color: #000000;">TRUE;<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">while</span><span style="color: #000000;">(bLoop)<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;nWait</span><span style="color: #000000;">=</span><span style="color: #000000;">MsgWaitForMultipleObjects(</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">hThread,FALSE,</span><span style="color: #000000;">3000</span><span style="color: #000000;">,QS_ALLEVENTS);<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">switch</span><span style="color: #000000;">(nWait)&nbsp;<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;WAIT_TIMEOUT:<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;WAIT_OBJECT_0</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">:<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(&nbsp;PeekMessage(&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">msg,&nbsp;NULL,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;PM_REMOVE&nbsp;)&nbsp;)&nbsp;{<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TranslateMessage(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">msg);<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DispatchMessage(&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">msg&nbsp;);<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;WAIT_OBJECT_0:<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">:<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bLoop</span><span style="color: #000000;">=</span><span style="color: #000000;">FALSE;<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">};<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">CloseHandle(hThread);<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br><br><br><br>          <img src ="http://www.cppblog.com/mcs51a/aggbug/140153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mcs51a/" target="_blank">mcs51a</a> 2011-02-16 14:00 <a href="http://www.cppblog.com/mcs51a/archive/2011/02/16/140153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Aforge.net 二值图像区域分割cpp移植</title><link>http://www.cppblog.com/mcs51a/archive/2011/01/18/138727.html</link><dc:creator>mcs51a</dc:creator><author>mcs51a</author><pubDate>Tue, 18 Jan 2011 03:08:00 GMT</pubDate><guid>http://www.cppblog.com/mcs51a/archive/2011/01/18/138727.html</guid><wfw:comment>http://www.cppblog.com/mcs51a/comments/138727.html</wfw:comment><comments>http://www.cppblog.com/mcs51a/archive/2011/01/18/138727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mcs51a/comments/commentRss/138727.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mcs51a/services/trackbacks/138727.html</trackback:ping><description><![CDATA[代码下载链接如下,<br>&nbsp; http://www.cppblog.com/Files/mcs51a/blobcounter.rar<br><br>代码中涉及到的DIB操作 是8Bit 的二值图像. <br><br><br><br> <img src ="http://www.cppblog.com/mcs51a/aggbug/138727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mcs51a/" target="_blank">mcs51a</a> 2011-01-18 11:08 <a href="http://www.cppblog.com/mcs51a/archive/2011/01/18/138727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不要随便使用CreateThread</title><link>http://www.cppblog.com/mcs51a/archive/2010/09/15/126635.html</link><dc:creator>mcs51a</dc:creator><author>mcs51a</author><pubDate>Wed, 15 Sep 2010 02:49:00 GMT</pubDate><guid>http://www.cppblog.com/mcs51a/archive/2010/09/15/126635.html</guid><wfw:comment>http://www.cppblog.com/mcs51a/comments/126635.html</wfw:comment><comments>http://www.cppblog.com/mcs51a/archive/2010/09/15/126635.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/mcs51a/comments/commentRss/126635.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/mcs51a/services/trackbacks/126635.html</trackback:ping><description><![CDATA[&nbsp; CreateThread,是WIN32 最直接创建的thread API函数.但是如果在线程回调（CALLBACK）函数中使用一些标准C的函数,当线程正常退出的时候,即使你释放了所有用户资源,仍然会有资源的泄漏的隐患。主要原因是线程中都需要有额外的资源,来保证一些标准C函数的线程安全，这些资源的创建是在C的标准函数被调用的时候，但是在thread退出的时候，没法通过正常途径释放。<br>&nbsp; 如果在你的回调函数中使用一些标准C函数,最好使用_beginthreadex,_endthreadex替换掉原来的CreateThread, _endthreadex 会释放这些资源，或者AfxBeginThread(里面有调用_beginthreadex,_endthreadex)<br>&nbsp; 具体原因查看《程序员的修养,编译与链接》一书。<br>&nbsp;<br><br> <img src ="http://www.cppblog.com/mcs51a/aggbug/126635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/mcs51a/" target="_blank">mcs51a</a> 2010-09-15 10:49 <a href="http://www.cppblog.com/mcs51a/archive/2010/09/15/126635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>