﻿<?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>IT博客-ts,ps,mpeg2 decoder and analysis</title><link>http://www.cnitblog.com/dvb-dvb/</link><description>分析工具,免费下载.</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 04:52:14 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 04:52:14 GMT</pubDate><ttl>60</ttl><item><title>千万别把DeepSeek吹的太高</title><link>http://www.cnitblog.com/dvb-dvb/archive/2025/01/25/deepseek.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Sat, 25 Jan 2025 14:28:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2025/01/25/deepseek.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/96912.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2025/01/25/deepseek.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/96912.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/96912.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cnitblog.com/dvb-dvb/archive/2025/01/25/deepseek.html'>阅读全文</a><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/96912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2025-01-25 22:28 <a href="http://www.cnitblog.com/dvb-dvb/archive/2025/01/25/deepseek.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>给wireshark增加lua插件，能解析私有的OAM消息，比如Realtek的oam</title><link>http://www.cnitblog.com/dvb-dvb/archive/2023/07/02/OAMmsg.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Sun, 02 Jul 2023 06:47:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2023/07/02/OAMmsg.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/96692.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2023/07/02/OAMmsg.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/96692.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/96692.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 插件位置：C:\Users\dell_user\AppData\Roaming\Wireshark\plugins放这个文件在这个目录： jza_for_rtl_oam.lua  每次启动会加载。  &nbsp;  这个文件修改后，要重启wireshark  加载插件后如下：  &nbsp;  待完善的地方：  Unknown的地方，都是可以对照标准完善的。&nbsp;&nbsp;<a href='http://www.cnitblog.com/dvb-dvb/archive/2023/07/02/OAMmsg.html'>阅读全文</a><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/96692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2023-07-02 14:47 <a href="http://www.cnitblog.com/dvb-dvb/archive/2023/07/02/OAMmsg.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2021-05-07 ： 撞车记录</title><link>http://www.cnitblog.com/dvb-dvb/archive/2021/05/07/92451.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Fri, 07 May 2021 01:42:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2021/05/07/92451.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/92451.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2021/05/07/92451.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/92451.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/92451.html</trackback:ping><description><![CDATA[<div>今天开车和电动车相撞：路窄，平常如果左右两侧有电动车通过，我就刹停。&nbsp;</div><div>今天左前方，一个人牵着狗走路，后面跟着骑电动车的。右前方小区门口，</div><div>我把脚放在脚刹上，刚朝右看了下，和左边摩托车碰了，我把玻璃放下来后。</div><div>那人说：你撞我干啥，你车子朝右打一把就过去了，</div><div>我发现他车子离左边的路边，我就说你留那么宽，骑在路中间啊</div><div>我估计是：他以为，他朝牵狗人和我车子中间夹下，我就朝右打方向，然后大家都过去了，其实右边是小区门口，我还没看清，怎么能打方向盘。</div><div>总之，大家互瞪两眼，各自走了，回家一看，车子漆皮掉了两块。我想，如果对方脚受伤了，那怎么办？</div><div></div><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/92451.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2021-05-07 09:42 <a href="http://www.cnitblog.com/dvb-dvb/archive/2021/05/07/92451.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pycharm 常用快捷键</title><link>http://www.cnitblog.com/dvb-dvb/archive/2020/10/08/Pycharm.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Thu, 08 Oct 2020 12:56:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2020/10/08/Pycharm.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/92346.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2020/10/08/Pycharm.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/92346.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/92346.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Pycharm 常用快捷键常用快捷键快捷键功能Ctrl + Q快速查看文档Ctrl + F1显示错误描述或警告信息Ctrl + /行注释（可选中多行）Ctrl + Alt + L代码格式化Ctrl + Alt + O自动导入Ctrl + Alt + I自动缩进Tab / Shift + Tab缩进、不缩进当前行（可选中多行）Ctrl+C/Ctrl+Insert复制当前行或选定的代码块到剪贴板Ctr...&nbsp;&nbsp;<a href='http://www.cnitblog.com/dvb-dvb/archive/2020/10/08/Pycharm.html'>阅读全文</a><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/92346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2020-10-08 20:56 <a href="http://www.cnitblog.com/dvb-dvb/archive/2020/10/08/Pycharm.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>onu 项目总结，[优点]</title><link>http://www.cnitblog.com/dvb-dvb/archive/2020/08/29/92334.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Sat, 29 Aug 2020 12:32:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2020/08/29/92334.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/92334.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2020/08/29/92334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/92334.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/92334.html</trackback:ping><description><![CDATA[小郭： 风向标：<br />小郭是最早主动加入onu,突然强烈要求的。<br />个人探索能力很强的，驱动，蓝牙，文字变语音，有目共睹的【我都不知道从哪里入手】<br />flash型号等属性能快速在code 里面定位，回答群里的问题，这一点我肯定自叹不如的。<br />linux 环境很熟悉，最早编译通过的。<br /><br /><br />daiping：持续性强<br />能做到知识分享，olt操作多次整理更新。<br />私下靠个人魅力联系中兴的人，解决问题了【这个我做不到，人家都不加我微信】<br />oam 的code 的消息流程图，能做到持续更新。【文件名+函数名+行数+汉语注释】<br /><br />chenwh:  轻车熟路<br />tr069+pppoe+web+ipv6 <br />tr069 两天就把逻辑理清楚了，这的确很快。<br />pppoe 能根据hl的提示打补丁，快速完成任务。【让我做，我得摸索半天】<br />web 的逻辑这次是比较烦的，理的快【我老用查找的方式，下次得修改下】<br />ipv6 ：熟悉的模块多了，越用越熟了，DNSmasq<br /><br />ji:杂<br />能快速用python完成bob校准，写号等任务【5G需要啥工具，想提前做，但还没有想出来】<br />和硬件打交道比较多，gpio，按键测试等。【继续保持】【详细记录每次有突出的log,供以后对比】<br />搭建复杂环境，把eoc和olt 链接起来【5G 需要啥环境，得想想】<br />web,wifi6该熟悉起来了。今年wifi校准没做，将来肯定要做的【得温故而知新了】<br />oam,mpcp协议百度熟悉了【5G 看过啥国际标准？该准备了】<br /><br /><br />chenhl:直接<br />能达到目的，能绕过问题，做事情比较直接。容易协商后修改接口，方便大家call.<br /><br />mo:太杂<br />testcenter: 以前没听说过的，自己钻研出来的，自学能力强了。【谁去督促他学这个的？】<br />有时间自愿加班到很晚，这责任心的确很强，不是一般大强。<br /><br />pengbo：理论上我放弃追赶了<br />这活人英语能力太强，老看国际英文标准【我老百度，百度没啥好东西的】<br />linux 底层知道的太多了，太细了【我不知道的太多了】<br />搞笑的是，他也用python了【一大把年纪了，用起来还超过我了： 直接linux下的python】<br />还会用脑图，整体把握没放松【我能想到的，他也能想到，他还做了，我还正在想呢】<img src ="http://www.cnitblog.com/dvb-dvb/aggbug/92334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2020-08-29 20:32 <a href="http://www.cnitblog.com/dvb-dvb/archive/2020/08/29/92334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>onu 项目总结，[缺点]   个人的狭隘观点</title><link>http://www.cnitblog.com/dvb-dvb/archive/2020/08/29/92333.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Sat, 29 Aug 2020 04:01:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2020/08/29/92333.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/92333.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2020/08/29/92333.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/92333.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/92333.html</trackback:ping><description><![CDATA[小郭： 老搞些没用的：<br />编译uboot	&nbsp;&nbsp;&nbsp;【不搞行不行，ocn没要求】<br />分区，&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 【不搞行不行，ocn没要求】<br />备份机制，&nbsp;&nbsp;&nbsp;【不搞行不行，ocn没要求】<br />签名验签	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;【不搞行不行，ocn没要求】，副作用极大，延长启动时间。<br />ocn测试用例【没贡献】<br /><br /><br />daiping：失误点 <br />我们最后一次送测ocn的oam升级文件，居然自己不测试，直接送测了。<br />自己的事情，自己不操心，别人肯定想不到的。<br /><br /><br />chenwh:  失误点 <br />一次是把git上的文件全部修改了。<br />目前还没有其他把柄被抓住。<br /><br />ji:失误点<br />送测ocn 总共要送8个文件，web升级，Oam升级，高低版本的。<br />每个文件测试需要重新彻底刷机，写号，切模式，至少搞4次，看版本的<br />做事的时候没有列表，被人一打搅，不知道做到哪一步了，糊涂了，肯定有失误了。<br /><br />chenhl:失误点<br />做的事情太多，太杂，不精益求精： 自己的出的版本出现segment fault， 自己都不验。<br />贪多必错，求快必错<br /><br /><br />mo:失误点<br />送测ocn 这么大的事情，不彻底抓大局，老关注sla等这种嘎啦果问题。<br />每个机器型号核对过么？估计没有，那天都着急的不行。<br /><br />pengbo：失误点<br />老占一角：某一点做的太深，没能控制住整体节奏。<img src ="http://www.cnitblog.com/dvb-dvb/aggbug/92333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2020-08-29 12:01 <a href="http://www.cnitblog.com/dvb-dvb/archive/2020/08/29/92333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多目标检测中的非极大值抑制（NMS）的算法改进_jza</title><link>http://www.cnitblog.com/dvb-dvb/archive/2019/11/17/91956.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Sun, 17 Nov 2019 02:33:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2019/11/17/91956.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/91956.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2019/11/17/91956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/91956.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/91956.html</trackback:ping><description><![CDATA[<div>非极大值抑制（Non-Maximum Suppression，NMS），顾名思义就是抑制不是极大值的元素，可以理解为局部最大搜索。这个局部代表的是一个邻域，邻域有两个参数可变，一是邻域的维数，二是邻域的大小。而是用于目标检测中提取分数最高的窗口的。例如在行人检测中，滑动窗口经提取特征，经分类器分类识别后，每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高（是行人的概率最大），并且抑制那些分数低的窗口。&nbsp;</div><div><img src="http://www.cnitblog.com/images/cnitblog_com/dvb-dvb/8114/o_mumpy_20191117101525.png" border="0" alt="" /><img src="http://www.cnitblog.com/images/cnitblog_com/dvb-dvb/8114/t_nms_single854.png" border="0" alt="" /></div><div><br /><br /><br /><br />Numpy&nbsp; 你语法都不懂就别往下看了，图中的每个知识点都是一个小程序<br /><br /><br /><br /></div><div></div><div>def stand_nms_non_max_suppression(boxes, probs=None, overlapThresh=0.3, list_res=None):</div><div>&nbsp; &nbsp; # if there are no boxes, return an empty list</div><div>&nbsp; &nbsp; if len(boxes) == 0:</div><div>&nbsp; &nbsp; &nbsp; &nbsp; return []</div><div></div><div>&nbsp; &nbsp; # if the bounding boxes are integers, convert them to floats -- this</div><div>&nbsp; &nbsp; # is important since we'll be doing a bunch of divisions</div><div>&nbsp; &nbsp; if boxes.dtype.kind == "i":</div><div>&nbsp; &nbsp; &nbsp; &nbsp; boxes = boxes.astype("float")</div><div></div><div>&nbsp; &nbsp; # initialize the list of picked indexes</div><div>&nbsp; &nbsp; pick = []</div><div></div><div>&nbsp; &nbsp; # grab the coordinates of the bounding boxes</div><div>&nbsp; &nbsp; x1 = boxes[:, 0]</div><div>&nbsp; &nbsp; y1 = boxes[:, 1]</div><div>&nbsp; &nbsp; x2 = boxes[:, 2]</div><div>&nbsp; &nbsp; y2 = boxes[:, 3]</div><div></div><div>&nbsp; &nbsp; # compute the area of the bounding boxes and grab the indexes to sort</div><div>&nbsp; &nbsp; # (in the case that no probabilities are provided, simply sort on the</div><div>&nbsp; &nbsp; # bottom-left y-coordinate)</div><div>&nbsp; &nbsp; area = (x2 - x1 + 1) * (y2 - y1 + 1)</div><div>&nbsp; &nbsp; idxs = y2</div><div>&nbsp; &nbsp; dt = np.dtype([('age', np.int), ('name', np.float)])</div><div>&nbsp; &nbsp; # if probabilities are provided, sort on them instead</div><div>&nbsp; &nbsp; if probs is not None:</div><div>&nbsp; &nbsp; &nbsp; &nbsp; idxs = probs</div><div></div><div>&nbsp; &nbsp; # sort the indexes</div><div>&nbsp; &nbsp; idxs = np.argsort(idxs)</div><div></div><div>&nbsp; &nbsp; # keep looping while some indexes still remain in the indexes list</div><div>&nbsp; &nbsp; while len(idxs) &gt; 0:</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # grab the last index in the indexes list and add the index value</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # to the list of picked indexes</div><div>&nbsp; &nbsp; &nbsp; &nbsp; last = len(idxs) - 1</div><div>&nbsp; &nbsp; &nbsp; &nbsp; i = idxs[last]</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # pick.append(i)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # find the largest (x, y) coordinates for the start of the bounding</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # box and the smallest (x, y) coordinates for the end of the bounding</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # box</div><div>&nbsp; &nbsp; &nbsp; &nbsp; xx1 = np.maximum(x1[i], x1[idxs[:last]])</div><div>&nbsp; &nbsp; &nbsp; &nbsp; yy1 = np.maximum(y1[i], y1[idxs[:last]])</div><div>&nbsp; &nbsp; &nbsp; &nbsp; xx2 = np.minimum(x2[i], x2[idxs[:last]])</div><div>&nbsp; &nbsp; &nbsp; &nbsp; yy2 = np.minimum(y2[i], y2[idxs[:last]])</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; # compute the width and height of the bounding box</div><div>&nbsp; &nbsp; &nbsp; &nbsp; w = np.maximum(0, xx2 - xx1 + 1)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; h = np.maximum(0, yy2 - yy1 + 1)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # print('aaaa')</div><div>&nbsp; &nbsp; &nbsp; &nbsp; xxx = boxes[i][0]</div><div>&nbsp; &nbsp; &nbsp; &nbsp; yyy = boxes[i][1]</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; # if len(list_res):</div><div>&nbsp; &nbsp; &nbsp; &nbsp; #&nbsp; &nbsp; &nbsp;print(xxx, yyy,list_res[int(yyy)][int(xxx)])</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # else:</div><div>&nbsp; &nbsp; &nbsp; &nbsp; #&nbsp; &nbsp; &nbsp;print(xxx, yyy)</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; # print('bbbb===',i)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # compute the ratio of overlap</div><div>&nbsp; &nbsp; &nbsp; &nbsp; overlap = (w * h) / area[idxs[:last]]</div><div>&nbsp; &nbsp; &nbsp; &nbsp; list_similar = np.where(overlap &gt; overlapThresh)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # print(list_similar)</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; # if 0:</div><div>&nbsp; &nbsp; &nbsp; &nbsp; if len(list_similar) and len(list_res):</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get_max_list = np.array([(i, list_res[int(yyy)][int(xxx)])], dtype=dt)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for x in np.nditer(list_similar):</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # print(x,',')</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xxx = boxes[x][0]</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; yyy = boxes[x][1]</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nearly_rect_list = np.array([(x,list_res[int(yyy)][int(xxx)])], dtype=dt)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get_max_list = np.append(get_max_list, nearly_rect_list)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; after_sort = np.sort(get_max_list, order=['name', 'age'])</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nLen1 = len(after_sort) - 1</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # print('nLen1 = ',after_sort[nLen1])</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # print(after_sort[nLen1][0],after_sort[nLen1][1])</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pick.append(after_sort[nLen1][0])</div><div>&nbsp; &nbsp; &nbsp; &nbsp; else:</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pick.append(i)</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; # delete all indexes from the index list that have overlap greater</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # than the provided overlap threshold</div><div>&nbsp; &nbsp; &nbsp; &nbsp; idxs = np.delete(idxs, np.concatenate(([last],</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;np.where(overlap &gt; overlapThresh)[0])))</div><div>&nbsp; &nbsp; return boxes[pick].astype("int")</div><div></div><div></div><div></div><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/91956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2019-11-17 10:33 <a href="http://www.cnitblog.com/dvb-dvb/archive/2019/11/17/91956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AI的以图搜图QBIC在智慧社区项目中的应用--AI工具-姬</title><link>http://www.cnitblog.com/dvb-dvb/archive/2019/06/09/91465.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Sun, 09 Jun 2019 10:06:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2019/06/09/91465.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/91465.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2019/06/09/91465.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/91465.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/91465.html</trackback:ping><description><![CDATA[<p><span style="font-family: 宋体; font-size: 12pt;">需求：</span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt; font-family:宋体;">如果前端页面中出现</span><span style="font-size:12.0pt"> A </span><span style="font-size:12.0pt;font-family: 宋体;">图，要求替换成</span><span style="font-size:12.0pt"> B </span><span style="font-size:12.0pt;font-family: 宋体;">图<br /><img src="http://www.cnitblog.com/images/cnitblog_com/dvb-dvb/8114/o_cm.png" border="0" alt="" />&nbsp;A&nbsp; &nbsp; <img src="http://www.cnitblog.com/images/cnitblog_com/dvb-dvb/8114/o_qingpuXe.png" border="0" alt="" />&nbsp;B&nbsp;&nbsp;<br /></span></p><p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">难点：<br /></span><span lang="EN-US">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="font-family: 宋体;">不同的人上传的图片，上传的文件名称都不一样，所在的目录都不一样。</span></p><p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">必须基于图片内容的搜索。</span><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">另外，大量图片内容相同的文件，可以用一个文件来，比如</span><span lang="EN-US">A.png </span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">和</span><span lang="EN-US">b.bmp</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">的内容一样，可以用</span><span lang="EN-US">c.jpg</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">来代替。</span><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">&nbsp;</span><span lang="EN-US">AI</span><span style="font-family: 宋体;">关键词：</span></p><p class="MsoNormal" style="text-indent:21.0pt"><span style="font-family:宋体;
mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:
宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin">欧式距离；</span><span lang="EN-US">(2)</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">、曼哈顿距离；</span><span lang="EN-US">(3)</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">、切比雪夫距离；</span><span lang="EN-US">(4)</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">、闵可夫斯基距离；</span><span lang="EN-US">(5)</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">、标准化欧式距离；</span><span lang="EN-US">(6)</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">、马氏距离；</span><span lang="EN-US">(7)</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">、巴氏距离；</span><span lang="EN-US">(8)</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">、汉明距离；</span><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">&nbsp;<br /></span><span style="font-family: 宋体;">环境部署：</span></p><p class="MsoNormal" style="text-indent:21.0pt"><span lang="EN-US">ubuntu16.04 , Opencv4.1 , opencv_contrib<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">&#8230;.<o:p></o:p></span></p><p class="MsoNormal" align="left"><span lang="EN-US" style="mso-bidi-font-size:10.5pt;font-family:宋体;mso-bidi-font-family:
宋体;mso-font-kerning:0pt">make -j7 &nbsp;<o:p></o:p></span></p><p class="MsoNormal" align="left"><span lang="EN-US" style="mso-bidi-font-size:10.5pt;font-family:宋体;mso-bidi-font-family:
宋体;mso-font-kerning:0pt">make install <o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">&#8230;<o:p></o:p></span></p><p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">坑：新建文件</span><span lang="EN-US">opencv.pc : </span><span style="font-family:宋体;mso-ascii-font-family:
Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">增加下列内容，必须出现下面的结果：</span><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">运行：</span><span style="background-color: #ffffff;">root@ubuntu:/home/opencv4.1/current/opencv# pkg-config --libs --cflags opencv</span></p>-I/usr/local/include/opencv4 -I/usr/local/include/opencv4/opencv2 -L/usr/local/lib -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn_objdetect -lopencv_dnn -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_imgcodecs -lopencv_img_hash -lopencv_imgproc -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto<p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin"><br />总共代码不超过</span><span lang="EN-US">180</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">行</span><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">Mat
imageqp=imread("qingpuXe.jpeg");<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">cvtColor(imageqp, grayTemp_qp,
CV_BGR2GRAY);<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">g_destHashCode_qp = get_mat_pHashValue(grayTemp_qp);<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">//</span><span style="font-family:宋体;
mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:
宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin">缩放尺寸</span><span lang="EN-US">, </span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">离散余弦变换，取左上角</span><span lang="EN-US">8*8</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">区块的</span><span lang="EN-US">DCT</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">系数</span><span lang="EN-US">(</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">图像的纹理</span><span lang="EN-US">)</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">，均值函数，计算哈希值。</span><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">nDistance = CountNonZero(g_destHashCode_cm
!= destHashCode); </span><span style="font-family:宋体;mso-ascii-font-family:
Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">计算汉明距离。</span><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">nDistance = 0 : </span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">说明完全相同，</span><span lang="EN-US">=3,</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">是相似；</span> <span lang="EN-US">&gt;4</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">，完全不同的两张图片。</span><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">&nbsp;<br /></span>Build.sh</p><p class="MsoNormal" style="text-indent:21.0pt"><span lang="EN-US">g++ `pkg-config
--cflags opencv` -o check main.cpp `pkg-config --libs opencv` -std=c++11<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">run:<o:p></o:p></span></p><p style="text-indent: 21pt;"><span style="font-size: 12pt; font-family: 宋体;"><img src="http://www.cnitblog.com/images/cnitblog_com/dvb-dvb/8114/build_run.png" width="803" height="464" alt="" /><br /><br /></span></p><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/91465.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2019-06-09 18:06 <a href="http://www.cnitblog.com/dvb-dvb/archive/2019/06/09/91465.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>赢 者 通 吃 与银行卡大赛</title><link>http://www.cnitblog.com/dvb-dvb/archive/2019/04/05/91383.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Fri, 05 Apr 2019 01:48:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2019/04/05/91383.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/91383.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2019/04/05/91383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/91383.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/91383.html</trackback:ping><description><![CDATA[<p align="center" style="text-align:center"><strong><span style="font-family:仿宋">赢 者 通 吃</span></strong></p>  <p>&nbsp;</p>  <p><span style="font-family:仿宋">锲子</span></p>  <p style="text-indent:21.0pt"><span style="font-family:仿宋">在一个狗穿衣服人露肉的年代，人性的贪婪和自私拉开了序幕。</span></p>  <p><span style="font-family:仿宋">老大打电话给小弟：你们丰田车在我们这边闯祸了死了3个人，赶紧过来处理。</span></p>  <p><span style="font-family:仿宋">小弟赶紧派丰田章男去老大那边鞠躬道歉，巨额赔款。</span></p>  <p>&nbsp;</p>  <p><span style="font-family:仿宋">前一阵，小弟打电话：老大：你们的飞机掉下来两架，死了300人，那些人命也是个命啊，先不提赔钱，先发个道歉声明算了，否则国际上面子过不去。</span></p>  <p>&nbsp;</p>  <p><span style="font-family:仿宋">老大不高兴的说，西毒欧阳锋说过：我下的毒谁人敢解，又谁人能解。</span></p>  <p><span style="font-family:仿宋">小弟：老大能否说明白些？</span></p>  <p><span style="font-family:仿宋">老大：那个国家不听话，我就让那个国家的win7,win10,安卓，全部蓝屏。</span></p>  <p><span style="font-family:仿宋">小弟：怪不得你们还股票大涨，订单激增。</span></p>  <p>&nbsp;</p>  <p><span style="font-family:仿宋">小弟：最近我们在举办人银行卡识别，车牌识别，人工智能大赛，请老大参加下，有红包拿。</span></p>  <p><span style="font-family:仿宋">老大：对你们那幼儿园水平不敢兴趣。不过我司李科在研发导弹防御系统的时候，做过一个apk小工具，安装你们手机上，绝对能拿第一。</span></p>  <p><span style="font-family:仿宋">小弟：啥功能，怎么这么强大？</span></p>  <p><span style="font-family:仿宋">老大：摆一千万张银行卡，在面积一平方米，高一米的桌子上，在10秒钟之内用手把所有卡推下桌子。用手机拍摄下落过程中的银行卡，在所有银行卡落地之前，APK识别他们。识别率99.999999%</span></p>  <p><span style="font-family:仿宋">小弟：你们怎么做到的？</span></p>  <p><span style="font-family:仿宋">老大：apk 仅仅是区块链的传输通道，后面是5G + 云计算，我们寻找全球的空闲的肉鸡的cpu 帮我们计算。</span></p>  <p><span style="font-family:仿宋">小弟：老大牛逼，我自己实现拉格朗日，霍夫变换，斐波那契，cpu都30%了。</span></p>  <p>&nbsp;</p>  <p><span style="font-family:仿宋">小弟：清明节放假三天，老大去哪里玩。</span></p>  <p><span style="font-family:仿宋">老大：忙着在家写人脸识别小工具呢？</span></p>  <p>&nbsp;</p>  <p><span style="font-family:仿宋">某天，小弟发现自己的脑袋掉在地上了。</span></p>  <p>&nbsp;</p>  <p><span style="font-family:仿宋">画外音：姬某人的座右铭是&nbsp;一天不学习，脑袋搬家。</span></p>  <p>&nbsp;</p>  <p><span style="font-family:仿宋">全剧终</span></p><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/91383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2019-04-05 09:48 <a href="http://www.cnitblog.com/dvb-dvb/archive/2019/04/05/91383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>亮剑: 图像处理的水平</title><link>http://www.cnitblog.com/dvb-dvb/archive/2019/03/16/91352.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Sat, 16 Mar 2019 00:33:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2019/03/16/91352.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/91352.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2019/03/16/91352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/91352.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/91352.html</trackback:ping><description><![CDATA[<div>亮剑</div>
<div><br />话说当年张三丰闭关修炼太极拳，六脉神剑，九阴真经，玉女心经，乾坤大挪移，葵花宝典，十年之后出来扎个马步，江湖上各大掌门吓得尿裤子了。</div>
<div><br />昨天任正非说他有操作系统了，各大公司高层极为震惊！</div>
<div><br />今天姬某人用不多于六行代码，把上图去除糟粕输出下图！</div>
<div><br />原理：同样都是盐油酱醋，为啥大厨做出的饭就是好吃。<br /><br /><img src="http://www.cnitblog.com/images/cnitblog_com/dvb-dvb/8114/o_无标题.png" border="0" alt="" /></div><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/91352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2019-03-16 08:33 <a href="http://www.cnitblog.com/dvb-dvb/archive/2019/03/16/91352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>青浦现场1460的解释</title><link>http://www.cnitblog.com/dvb-dvb/archive/2019/02/03/mtu1460.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Sun, 03 Feb 2019 12:42:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2019/02/03/mtu1460.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/91317.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2019/02/03/mtu1460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/91317.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/91317.html</trackback:ping><description><![CDATA[<p align="center" style="text-align:center"><span style="font-family:宋体;">青浦现场</span>1460<span style="font-family:宋体;">的解释</span></p>  <p align="center" style="text-align:center">&nbsp;</p>  <p align="left"><span style="font-family: 宋体;">交换机就像马路上贴罚单的交警，到处都有，突然一个交换机用大喇叭说：所有设备的</span>Mtu<span style="font-family:宋体;">都必须是</span>1460<span style="font-family:宋体;">。智能盒子听见了里面变成</span>1460<span style="font-family:宋体;">，一根网线插在电脑上，电脑上也是</span>1460<span style="font-family:宋体;">；这跟网线插入</span>PI01. PI01<span style="font-family:宋体;">说我天生下来就是</span>1500<span style="font-family:宋体;">，我不会变。结果</span>pi01<span style="font-family:宋体;">卡死了。</span></p>  <p align="left"><span style="font-family: 宋体;">这就是说：为什么在盒子里面敲</span>1460<span style="font-family:宋体;">里面能好的原因：需要再次去青浦证实下：当时智能机和电脑是否的确是</span>1460<span style="font-family:宋体;">。</span> <span style="font-family:宋体;">需要</span>debug key<span style="font-family:宋体;">的盒子。</span></p>  <p align="left"><img width="693" height="174" src="file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg" v:shapes="图片_x0020_4"  alt="" /></p>  <p align="left"><span style="font-family: 宋体;">上图的解释：</span></p>  <p align="left"><span style="font-family: 宋体;">网络上有很多交换机，估计是某个交换机</span>A<span style="font-family:宋体;">的设置：机房服务器</span>mtu<span style="font-family:宋体;">是</span>1500<span style="font-family:宋体;">，</span> <span style="font-family: 宋体;">，从机房出来是</span>1500<span style="font-family:宋体;">的数据包，经过交换机</span>A<span style="font-family:宋体;">后</span>,<span style="font-family:宋体;">被转换为</span>1460<span style="font-family:宋体;">的数据包，所以高清盒子能收到这些图片数据，张马村村首页的图片都很大的。所以从机房</span>1500&#8212;<span style="font-family:宋体;">》交换机</span>A-<span style="font-family:Wingdings;">&#224;</span>1460<span style="font-family:宋体;">是没有问题的。</span> </p>  <p align="left"><span style="font-family: 宋体;">这就说明了为啥开机能看到区首页和村首页。（</span>V1 <span style="font-family:宋体;">和</span> V2<span style="font-family:宋体;">）</span></p>  <p align="left"><span style="font-family: 宋体;">当盒子在</span>1500<span style="font-family:宋体;">或者</span>1460<span style="font-family:宋体;">的情况下，盒子发出的</span>v1,v2<span style="font-family:宋体;">的</span>get <span style="font-family:宋体;">请求都能被正常返回的。</span></p>  <p align="left">&nbsp;</p>  <p align="left"><span style="font-family: 宋体;">居然有人提议去修改机房服务器的</span>mtu<span style="font-family:宋体;">，真奇怪。</span> <span style="font-family: 宋体;">仔细想想：</span> <span style="font-family:宋体;">是盒子发</span>1500<span style="font-family:宋体;">消息的被交换机挡住了，我们服务器收不到。</span> <span style="font-family:宋体;">盒子</span>mtu1500,<span style="font-family:宋体;">发消息，</span> <span style="font-family: 宋体;">如果中间没有交换机，我们服务器</span>1500,<span style="font-family:宋体;">有什么理由收不到呢？你把服务器改成</span>1460 <span style="font-family:宋体;">难道就能收到了么？你还改小了啊</span></p>  <p align="left">&nbsp;</p>  <p align="left">&nbsp;</p>  <p align="left"><span style="font-family: 宋体;">再看盒子发出的</span>v3<span style="font-family:宋体;">的</span>http<span style="font-family:宋体;">的</span>get<span style="font-family:宋体;">请求，</span>length=1238. <span style="font-family:宋体;">这个</span>get<span style="font-family:宋体;">的参数请求太长，拼接下来估计超过</span>1460<span style="font-family:宋体;">了。所以无法被交换机</span>A <span style="font-family:宋体;">转发，所以机房的服务器无法收到</span>V3<span style="font-family:宋体;">的请求。</span></p>  <p align="left">V1 <span style="font-family:宋体;">和</span> v2<span style="font-family:宋体;">的</span>get<span style="font-family:宋体;">请求的</span>length<span style="font-family:宋体;">就很短，</span>468<span style="font-family:宋体;">所以我们服务器能收到。</span></p>  <p align="left"><span style="font-family: 宋体;">如果我们把</span>index.asp<span style="font-family:宋体;">的内容写成直接跳转到</span>v3<span style="font-family:宋体;">，</span> <span style="font-family: 宋体;">估计啥也出不来的。</span></p>  <p align="left"><img width="693" height="386" src="file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg" v:shapes="图片_x0020_1"  alt="" /></p>  <p align="left"><span style="font-family: 宋体;">不理解盒子就发个</span>http<span style="font-family:宋体;">的</span>get<span style="font-family:宋体;">消息，为啥带这么多参数，</span>1238<span style="font-family:宋体;">这么长的</span>cooki<span style="font-family:宋体;">，用的着这么长么？</span> <span style="font-family:宋体;">谁懂说两句？</span></p>  <p align="left">&nbsp;</p>  <p align="left">&nbsp;</p>  <p align="left"><span style="font-family: 宋体;">当盒子卡死的时候，</span>wget<span style="font-family:宋体;">可以：</span></p>  <p align="left"><img width="692" height="43" src="file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png" v:shapes="图片_x0020_2"  alt="" /></p>  <p align="left">wget <span style="font-family:宋体;">的猜想</span></p>  <p align="left"><span style="font-family: 宋体;">估计是因为：</span>wget&nbsp; &#8220;<a href="http://........../">http://..........</a> ;&#8221; , <span style="font-family:宋体;">后面的这个参数的</span>length<span style="font-family:宋体;">小的可以。</span></p>  <p align="left"><span style="font-family: 宋体;">估计后面的这个参数的</span>length <span style="font-family:宋体;">大了就不可以？</span></p>  <p align="left"><span style="font-family: 宋体;">下次去青浦抓包下</span>wget<span style="font-family:宋体;">的包。把</span>wget<span style="font-family:宋体;">的参数搞成</span>1400<span style="font-family:宋体;">看看</span></p>  <p align="left">&nbsp;</p>  <p align="left"><img border="0" width="692" height="402" src="file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.png" v:shapes="图片_x0020_3"  alt="" /></p>  <p align="left">Ping &nbsp;&#8211;f <span style="font-family:宋体;">的意思是</span> <span style="font-family:宋体;">数据包</span> <span style="font-family:宋体;">不能再被拆分了。</span></p>  <p>1464+28=1492<span style="font-family: 宋体;">；</span> <span style="font-family:宋体;">我家里是</span>pppoe<span style="font-family:宋体;">上网</span>,<span style="font-family:宋体;">结果</span>pppoe + 8<span style="font-family:宋体;">个字节的</span>pppoe<span style="font-family:宋体;">的包头，总共就是</span>1500</p>  <p>DF(Dont Fragment)&nbsp; <span style="font-family:宋体;">：</span> ping <span style="font-family:宋体;">包有专门的参数说</span> <span style="font-family:宋体;">不可分割。</span></p>  <p><span style="font-family:宋体;">刚刚看过了</span>http<span style="font-family:宋体;">协议的包</span> <span style="font-family:宋体;">默认就是有</span>df <span style="font-family:宋体;">这个参数。</span></p>  <p>&nbsp;</p>  <p><span style="font-family:宋体;">如果遇到</span>MTU<span style="font-family:宋体;">小于</span>IP<span style="font-family:宋体;">数据包的情况，交换机设备就会根据要求丢弃这个数据包</span>----<span style="font-family:宋体;">交换机就这个特性。</span></p>  <p>&nbsp;</p>  <p><span style="font-family:宋体;">日本核辐射泄露的时候，大家都撤离，有人觉得这个恰恰是研究核辐射的最佳时机。</span></p>  <p><span style="font-family:宋体;">同样，青浦的坏环境，正好让我们多测试盒子。难道专门还搭建一个坏环境测试盒子？</span></p>  <p>&nbsp;</p>  <p><span style="font-family:宋体;">年后再去青浦一次。</span></p><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/91317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2019-02-03 20:42 <a href="http://www.cnitblog.com/dvb-dvb/archive/2019/02/03/mtu1460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>人工智能，AI 切图， cut cut cut base on opencv</title><link>http://www.cnitblog.com/dvb-dvb/archive/2019/01/20/91306.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Sun, 20 Jan 2019 05:47:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2019/01/20/91306.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/91306.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2019/01/20/91306.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/91306.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/91306.html</trackback:ping><description><![CDATA[<div><div></div><div>如何把CM项目中的800*1万的图像，智能切割，防止出现把人头截断，或者一行字给截断了。</div><div>智能分析图像中的连续或者轮廓部分，计算空白处，从空白处crop 保存图像。</div><div>设计思路如下：</div><div>用opencv打开图像，转换为gray， CV_BGR2GRAY，背景灰度，局部二值化或自适应二值化，</div><div>阀值和block选择真不容易，再直方图分析和X轴像素影射叠加。再根据zhangqf说的3000就可以分割图片，</div><div>求出到双峰图的波谷的y值,目前取了2500，再根据y值cv::Rect( 0, n_last, colNumber, (tmpMatrix[k] - n_last) )，</div><div>最后call imwrite存图片。部分code参加我的blog&nbsp;</div><div>http://www.cnitblog.com/dvb-dvb/archive/2019/01/20/91306.html</div><br />Mat src = imread(fn);</div><div><span style="white-space:pre">	</span>//<span style="white-space:pre">	</span>imshow("Hello World!",src);</div><div><span style="white-space:pre">	</span>//<span style="white-space:pre">	</span>waitKey(10);<span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>namedWindow("TrackBar",CV_WINDOW_AUTOSIZE);</div><div><span style="white-space:pre">		</span>Mat graydst;</div><div><span style="white-space:pre">		</span>cvtColor(src,graydst,CV_BGR2GRAY);</div><div><span style="white-space:pre">	</span>//<span style="white-space:pre">	</span> = src(src);</div><div><span style="white-space:pre">		</span>//cv::threshold(graydst, g_image_dst, 70, 255, CV_THRESH_BINARY_INV);</div><div><span style="white-space:pre">		</span>cv::adaptiveThreshold(graydst,g_image_dst,255,cv::ADAPTIVE_THRESH_GAUSSIAN_C,cv::THRESH_BINARY,25,10);</div><div></div><div><span style="white-space:pre">		</span>//int kkk = 0;</div><div><span style="white-space:pre">		</span>//createTrackbar("Threshold","TrackBar",&amp;kkk,255,on_image_Change,&amp;graydst);</div><div><span style="white-space:pre">	</span></div><div>&nbsp; &nbsp; // threshold(src,g_image_dst,value,255,THRESH_BINARY);</div><div>&nbsp; &nbsp; &nbsp;//Canny(src,dst,value,255);</div><div>&nbsp; &nbsp; &nbsp;imshow("TrackBar",g_image_dst);//　　21/22/23这三行代码如果去掉的话，在未调整滑动条的情况下，不会有画面显示</div><div>&nbsp;&nbsp;</div><div><span style="white-space:pre">	</span> //imwrite("E:\\cm.bmp",g_image_dst);</div><div><span style="white-space:pre">	</span> int rowNumber=src.rows;//获取行数</div><div><span style="white-space:pre">	</span> int colNumber=src.cols;//获取列数</div><div></div><div><span style="white-space:pre">	</span> int<span style="white-space:pre">	</span>IimageSize =rowNumber;</div><div><span style="white-space:pre">	</span>//计算位图像素部分的大小，也可以是bmpinfoheader.biSizeImage 但它有时候是0,不可靠。&nbsp;&nbsp;</div><div><span style="white-space:pre">	</span>//IimageSize = WIDTHBYTES(fi-&gt;biWidth * fi-&gt;biBitCount * 3) * fi-&gt;biHeight;</div><div><span style="white-space:pre">	</span>unsigned long * tmpMatrix = new unsigned long[IimageSize];</div><div><span style="white-space:pre">	</span>memset(tmpMatrix, 0, (IimageSize)* sizeof(long));</div><div></div><div><span style="white-space:pre">	</span>for(int i=0;i&lt;rowNumber;i++)</div><div><span style="white-space:pre">	</span>{</div><div><span style="white-space:pre">		</span>for (int j = 0; j &lt;colNumber; j++)</div><div><span style="white-space:pre">		</span>{</div><div><span style="white-space:pre">			</span>if(g_image_dst.at&lt;uchar&gt;(i,j) &lt; 128)</div><div><span style="white-space:pre">				</span>tmpMatrix[i] = tmpMatrix[i] + 1;</div><div></div><div><span style="white-space:pre">			</span>//if(g_image_dst.at&lt;uchar&gt;(i,j) &gt; 128)</div><div><span style="white-space:pre">			</span>//<span style="white-space:pre">	</span>TRACE(" ");</div><div><span style="white-space:pre">			</span>//else</div><div><span style="white-space:pre">			</span>//{</div><div><span style="white-space:pre">			</span>//<span style="white-space:pre">	</span>TRACE("*");</div><div><span style="white-space:pre">			</span>//<span style="white-space:pre">	</span>tmpMatrix[i] = tmpMatrix[i] + 1;</div><div><span style="white-space:pre">			</span>//}</div><div><span style="white-space:pre">			</span>//TRACE(",%d",g_image_dst.at&lt;uchar&gt;(i,j));<span style="white-space:pre">				</span></div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>TRACE("%4d,%ld\n",i,tmpMatrix[i]);</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>int nMax_line_number = 1024;</div><div><span style="white-space:pre">	</span>int nIndex = 0;</div><div><span style="white-space:pre">	</span>//nLine_numArray</div><div><span style="white-space:pre">	</span>TRACE("-------------------------------\n");</div><div><span style="white-space:pre">	</span>for(int i = 5;i&lt;(IimageSize -5);i++)</div><div><span style="white-space:pre">	</span>{</div><div><span style="white-space:pre">		</span>if(nIndex &gt;= nMax_line_number)</div><div><span style="white-space:pre">			</span>break;</div><div><span style="white-space:pre">		</span>if(tmpMatrix[i-3] == 0 &amp;&amp; tmpMatrix[i-2] == 0 &amp;&amp; tmpMatrix[i-1] == 0 &amp;&amp; tmpMatrix[i] == 0 &amp;&amp; <span style="white-space:pre">	</span>tmpMatrix[i+1] == 0 &amp;&amp; <span style="white-space:pre">	</span>tmpMatrix[i+2] == 0 &amp;&amp; <span style="white-space:pre">	</span>tmpMatrix[i+3] == 0 )<span style="white-space:pre">	</span></div><div><span style="white-space:pre">		</span>//<span style="white-space:pre">	</span>if(tmpMatrix[i-2] == 0 &amp;&amp; <span style="white-space:pre">			</span>tmpMatrix[i-1] == 0 &amp;&amp; <span style="white-space:pre">			</span>tmpMatrix[i] == 0 &amp;&amp; <span style="white-space:pre">			</span>tmpMatrix[i+1] == 0 &amp;&amp; <span style="white-space:pre">			</span>tmpMatrix[i+2] == 0 )<span style="white-space:pre">	</span></div><div><span style="white-space:pre">		</span>{</div><div><span style="white-space:pre">			</span>nLine_numArray[nIndex] = i;</div><div><span style="white-space:pre">			</span>nIndex++;</div><div><span style="white-space:pre">			</span>TRACE("-%d",i);</div><div><span style="white-space:pre">			</span>i = i + 3;</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span>TRACE("------------------%d-------------\n",nIndex);</div><div></div><div><span style="white-space:pre">	</span>int nCurrent = 2500;</div><div><span style="white-space:pre">	</span>int n_buchang = 0;</div><div><span style="white-space:pre">	</span>int nLoop = 0;</div><div><span style="white-space:pre">	</span>int nReal_cut_num = 0;</div><div><span style="white-space:pre">	</span>int n_min1,m_max2 = 0;</div><div><span style="white-space:pre">	</span>while(nCurrent &lt;= rowNumber)</div><div><span style="white-space:pre">	</span>{<span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>for(int k = nLoop;k&lt;nIndex;k++)</div><div><span style="white-space:pre">		</span>{</div><div><span style="white-space:pre">			</span>if(nCurrent &lt;= nLine_numArray[k])</div><div><span style="white-space:pre">			</span>{</div><div><span style="white-space:pre">				</span>n_min1 = nLine_numArray[k] - nCurrent;</div><div><span style="white-space:pre">				</span>m_max2 = nCurrent - nLine_numArray[k -1];</div><div><span style="white-space:pre">				</span>nLoop = k +1;<span style="white-space:pre">				</span></div><div><span style="white-space:pre">				</span>if(n_min1 &lt; m_max2)</div><div><span style="white-space:pre">				</span>{</div><div><span style="white-space:pre">					</span>nCurrent = nLine_numArray[k];</div><div><span style="white-space:pre">				</span>}</div><div><span style="white-space:pre">				</span>else</div><div><span style="white-space:pre">				</span>{</div><div><span style="white-space:pre">					</span>nCurrent = nLine_numArray[k -1];</div><div><span style="white-space:pre">				</span>}</div><div><span style="white-space:pre">				</span>tmpMatrix[nReal_cut_num] = nCurrent;</div><div><span style="white-space:pre">				</span>nReal_cut_num ++;</div><div><span style="white-space:pre">				</span>//TRACE("--%d--",nCurrent);</div><div><span style="white-space:pre">				</span>break;</div><div><span style="white-space:pre">			</span>}<span style="white-space:pre">			</span>&nbsp;</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>nCurrent += 2500;</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span>TRACE("--------nReal_cut_num----------%d-------------\n",nReal_cut_num);</div><div><span style="white-space:pre">	</span>int n_last = 0;</div><div><span style="white-space:pre">	</span>for(int k = 0;k&lt;=nReal_cut_num;k++)</div><div><span style="white-space:pre">	</span>{</div><div><span style="white-space:pre">		</span>TRACE("--%d",tmpMatrix[k]);</div><div><span style="white-space:pre">		</span>char str_Filename[MAX_PATH] ="D:\\jza\\ssssss\\1545618538886029.jpg";</div><div><span style="white-space:pre">		</span>sprintf(str_Filename,"e:\\1545618538886029_%d.jpg",(k+1));</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>cv::Rect tmpRectangle = cv::Rect( 0, n_last, colNumber, (tmpMatrix[k] - n_last) );</div><div><span style="white-space:pre">		</span>if(k ==nReal_cut_num)</div><div><span style="white-space:pre">		</span>{</div><div><span style="white-space:pre">			</span>tmpRectangle = cv::Rect( 0, n_last, colNumber, (rowNumber - n_last) );</div><div><span style="white-space:pre">		</span>}</div><div></div><div><span style="white-space:pre">		</span>n_last = tmpMatrix[k];</div><div></div><div><span style="white-space:pre">		</span>Mat imageROI = src(tmpRectangle);</div><div><span style="white-space:pre">		</span>imwrite(str_Filename,imageROI);</div><div></div><div></div><div><span style="white-space:pre">		</span>//CvvImage imageROI;&nbsp;</div><div><span style="white-space:pre">		</span>//imageROI.CopyOf( src );</div><div><span style="white-space:pre">		</span>//imageROI = image(tmpRectangle);</div><div><span style="white-space:pre">		</span>//</div><div><span style="white-space:pre">		</span>//imwrite("E://ROI111.jpg",imageROI);</div><div><span style="white-space:pre">	</span>}</div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div><span style="white-space:pre">	</span>delete tmpMatrix;</div><div><span style="white-space:pre">	</span>while (char(waitKey(10)) != 'n')&nbsp;</div><div><span style="white-space:pre">	</span>{<span style="white-space:pre">	</span></div><div><span style="white-space:pre">		</span>Sleep(1000);</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span>destroyWindow("TrackBar");</div><div></div><img src="http://www.cnitblog.com/images/cnitblog_com/dvb-dvb/8114/o_cm.jpg" border="0" alt="" /><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/91306.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2019-01-20 13:47 <a href="http://www.cnitblog.com/dvb-dvb/archive/2019/01/20/91306.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C/c++,  基础知识大全，你都了解了，我叫你大婶！！！   引用别人整理的。不是原创的</title><link>http://www.cnitblog.com/dvb-dvb/archive/2018/05/19/91023.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Sat, 19 May 2018 13:50:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2018/05/19/91023.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/91023.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2018/05/19/91023.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/91023.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/91023.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用WinInet开发Internet客户端应用指南实现步骤大家知道，每个Internet客户端程序都伴随有一定的目的行为，如读文件、写文件、删除文件等等。客户端的程序要实现这些行为的先决条件是建立Internet连接。然后再根据不同的目的进行具体的操作。为了方便起见，下面这这些张表格针对不同的应用行为列出了所需要的具体操作。其中列出了一般的Internet URL (FTP、或者 HTTP)客户端...&nbsp;&nbsp;<a href='http://www.cnitblog.com/dvb-dvb/archive/2018/05/19/91023.html'>阅读全文</a><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/91023.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2018-05-19 21:50 <a href="http://www.cnitblog.com/dvb-dvb/archive/2018/05/19/91023.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>音视频格式大全：stream type  来自VLC --&gt; demux--&gt;ts.c</title><link>http://www.cnitblog.com/dvb-dvb/archive/2018/02/22/90881.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Thu, 22 Feb 2018 08:13:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2018/02/22/90881.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/90881.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2018/02/22/90881.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/90881.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/90881.html</trackback:ping><description><![CDATA[<div>&nbsp;switch( i_stream_type )</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; case 0x01: &nbsp;/* MPEG-1 video */</div><div>&nbsp; &nbsp; case 0x02: &nbsp;/* MPEG-2 video */</div><div>&nbsp; &nbsp; case 0x80: &nbsp;/* MPEG-2 MOTO video */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, VIDEO_ES, VLC_CODEC_MPGV );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x03: &nbsp;/* MPEG-1 audio */</div><div>&nbsp; &nbsp; case 0x04: &nbsp;/* MPEG-2 audio */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, AUDIO_ES, VLC_CODEC_MPGA );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x11: &nbsp;/* MPEG4 (audio) LATM */</div><div>&nbsp; &nbsp; case 0x0f: &nbsp;/* ISO/IEC 13818-7 Audio with ADTS transport syntax */</div><div>&nbsp; &nbsp; case 0x1c: &nbsp;/* ISO/IEC 14496-3 Audio, without using any additional</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;transport syntax, such as DST, ALS and SLS */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, AUDIO_ES, VLC_CODEC_MP4A );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x10: &nbsp;/* MPEG4 (video) */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, VIDEO_ES, VLC_CODEC_MP4V );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x1B: &nbsp;/* H264 &lt;- check transport syntax/needed descriptor */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, VIDEO_ES, VLC_CODEC_H264 );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x24: &nbsp;/* HEVC */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, VIDEO_ES, VLC_CODEC_HEVC );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x42: &nbsp;/* CAVS (Chinese AVS) */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, VIDEO_ES, VLC_CODEC_CAVS );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div></div><div>&nbsp; &nbsp; case 0x81: &nbsp;/* A52 (audio) */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, AUDIO_ES, VLC_CODEC_A52 );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x82: &nbsp;/* SCTE-27 (sub) */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, SPU_ES, VLC_CODEC_SCTE_27 );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x84: &nbsp;/* SDDS (audio) */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, AUDIO_ES, VLC_CODEC_SDDS );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x85: &nbsp;/* DTS (audio) */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, AUDIO_ES, VLC_CODEC_DTS );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x87: /* E-AC3 */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, AUDIO_ES, VLC_CODEC_EAC3 );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div></div><div>&nbsp; &nbsp; case 0x91: &nbsp;/* A52 vls (audio) */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, AUDIO_ES, VLC_FOURCC( 'a', '5', '2', 'b' ) );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; case 0x92: &nbsp;/* DVD_SPU vls (sub) */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, SPU_ES, VLC_FOURCC( 's', 'p', 'u', 'b' ) );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div></div><div>&nbsp; &nbsp; case 0x94: &nbsp;/* SDDS (audio) */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, AUDIO_ES, VLC_FOURCC( 's', 'd', 'd', 'b' ) );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div></div><div>&nbsp; &nbsp; case 0xa0: &nbsp;/* MSCODEC vlc (video) (fixed later) */</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, UNKNOWN_ES, 0 );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div></div><div>&nbsp; &nbsp; case 0x06: &nbsp;/* PES_PRIVATE &nbsp;(fixed later) */</div><div>&nbsp; &nbsp; case 0x12: &nbsp;/* MPEG-4 generic (sub/scene/...) (fixed later) */</div><div>&nbsp; &nbsp; case 0xEA: &nbsp;/* Privately managed ES (VC-1) (fixed later */</div><div>&nbsp; &nbsp; default:</div><div>&nbsp; &nbsp; &nbsp; &nbsp; es_format_Init( fmt, UNKNOWN_ES, 0 );</div><div>&nbsp; &nbsp; &nbsp; &nbsp; break;</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; /* PES packets usually contain truncated frames */</div><div>&nbsp; &nbsp; fmt-&gt;b_packetized = false;</div><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/90881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2018-02-22 16:13 <a href="http://www.cnitblog.com/dvb-dvb/archive/2018/02/22/90881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>libpcap抓完整的http分包；http分包的拼包机制，</title><link>http://www.cnitblog.com/dvb-dvb/archive/2018/01/05/90849.html</link><dc:creator>TS,MPEG2,dvbc专家</dc:creator><author>TS,MPEG2,dvbc专家</author><pubDate>Fri, 05 Jan 2018 10:12:00 GMT</pubDate><guid>http://www.cnitblog.com/dvb-dvb/archive/2018/01/05/90849.html</guid><wfw:comment>http://www.cnitblog.com/dvb-dvb/comments/90849.html</wfw:comment><comments>http://www.cnitblog.com/dvb-dvb/archive/2018/01/05/90849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/dvb-dvb/comments/commentRss/90849.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/dvb-dvb/services/trackbacks/90849.html</trackback:ping><description><![CDATA[<span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">1,创建一个buffer list, &nbsp;这个buffer list的总体大小不超过4M，</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">2，抓包： 网络包都大于64byte; 如果小于64，当做坏包处理，</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">3，如果当前的list 是空，并且整个包长小于 140 （tcp + http head ... 知道出现content length）&nbsp;</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果tcp包的，tcp.flags==0x18 ：</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">并且pkt_data+34 是&#8220;HTTP&#8221; , 或者进一步判断是 HTTP/1.1 200 OK</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果是，说明这个包是http的response的开头。</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">寻找当前的content length ,并求出content length的大小。</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果没有找到content length，也没有找到 Transfer-Encoding ： 那这种包，我还没有见过。</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果找到content length ，那判断pkt_data 的剩余长度 + 4 （\r\n\r\n），是不是 恰好是content length,</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果是-恰好说明是： 这个包已经是一个完整的http 包了，没有分包，即没有出现 数据被分包的问题。</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果不是-- 说明数据被分包了，请把下列属性当成一个 list 的一个节点。</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">src_ip，dst_ip，src_port，dst_port，seq ,next_seq, ack, current_buffer,cur_buf_len.</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">请把这个member ,增加到 list里面。</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果当前的list 非空，</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">那对比当前的 这些属性 是否和list的某个成员的属性一致: src_ip，dst_ip，src_port，dst_port，seq ,next_seq, ack</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">注意ack ,seq的大小端问题： BigLittleSwap32。</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果属性匹配那把这个buffer 增加到 旧的buffer后面，再次call : Check_http_content_is_end</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果分包的话，一般情况下包的长度的序列如下：X,X,X,X,...Y ,并且X&gt;Y,</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果中间出现某些 包的PDU_Packet_length 和 X的包长不相等 --- 至少我没有见过， 那我就报错了。</span><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px; white-space: pre;"> </span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果不相等，去判断Check_http_content_is_end（）了。</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果没有content-length ,na zhoad transfer-Encoding: 看是否是chunked.</span><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><br style="box-sizing: border-box; color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;" /><span style="color: #454545; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;">如果最后一个包的tcp的flag: 是0x18 (PSH,ACK)， 这更能说明是这是一个http 分包的最后一个包了。</span><img src ="http://www.cnitblog.com/dvb-dvb/aggbug/90849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/dvb-dvb/" target="_blank">TS,MPEG2,dvbc专家</a> 2018-01-05 18:12 <a href="http://www.cnitblog.com/dvb-dvb/archive/2018/01/05/90849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>