您当前位置: 首页 »

音视频_图像相关

分类目录归档: 音视频_图像相关 - 第2页

【vs2013、msys2】vs2013命令行环境变量不继承到msys2

编译一些开源的时候不得不需要用到msys2。所以需要现在vs2013的命令行环境中启动msys2环境,这样就可以把vs的命令行环境变量继承到msys2。

目前最新版本的msys2会出现不继承的情况,主要由于msys2 中/etc/profile文件中继承脚本的过滤了vs的一些有效环境,参考csdn上一个博客的修改方法,修改成如下:

 

2017-05-17 | | [奇葩类]求上进系列, 编码技巧, 音视频_图像相关, 音视频容器, 音视频编解码

【vs2013、msys2】vs2013命令行环境变量不继承到msys2已关闭评论

【winxp、vista、webrtc、chromium】放弃支持xp的路上webrtc跟上了!

最近拿了59的分支代码,后来偶然看到webrtc把wavein/waveout函数族相关的代码删除掉,看git注释另外根据chrome弃疗的心语路程,webrtc终于放弃xp了。

但苦了我了。。。。。。因为国内还有着一大群xp用户。。。。

2017-05-08 | | *生活*, 思考, 音视频_图像相关, 音视频容器, 音视频编解码

【winxp、vista、webrtc、chromium】放弃支持xp的路上webrtc跟上了!已关闭评论

【chrome、webrtc】python-boto代理设置

webrtc最近半年的时间里又改代码框架,又改下载脚本!真***法科!

 

目前除了使用到python-curl、git、还用到了一个叫做python-boto的玩意,用来从aws上下东西的。不理解为啥不用自家的云。。。。

现在拿webrtc的代码,除了需要配置git、python-curl的代理,还需要配python-boto的代理。

python-boto的代理配置方式如下:

1,在某个目录中创建一个.cfg后缀的文件

2,然后填入内容如:

  1. [Boto]
    proxy=127.0.0.1
    proxy_port = 10808

3,命令行中输入!

  1. NO_AUTH_BOTO_CONFIG=C:\work\depot_tools\boto.cfg

2017-05-08 | | shell, windows-shell, 编码技巧, 音视频_图像相关, 音视频容器, 音视频编解码

【chrome、webrtc】python-boto代理设置已关闭评论

【c++11、webrtc、stl】利用stl“就地构造”提高代码性能

最近在看webrtc的trunk上最新的代码,今天无意间留意到了stl容器中的“std::vector<T>::emplace_back”。事实上在接触webrtc之初我就经常能看到这个方法的使用,只不过那时候的对webrtc完全不了解,所焦点都在webrtc是个什么东西上。

 

后来查stl官方文档,看到的解释为:

构造并插入元素

同时网站上也给出了列子,但并不是很明确。看vs2015中对该函数的实现,实在看不懂(因为和push_back的一个分支实现很非常相似)。google看到这个函数代表在vector内部进行构造并放到数组里。

这样做的好处在于不需要去特意写移动构造函数,也不需要进行任何移动操作。间接的加快了性能。

 

 

 

ps:由于网上的说法存在问题,所这里要明确更正一下。

emplace_backpush_back两个函数都是通过“布局new”的方式将元素对象的内存放到自己的中(并非栈中)。

 

 

2017-05-02 | | 思考, 算法导论, 编码技巧, 音视频_图像相关, 音视频容器, 音视频编解码

【c++11、webrtc、stl】利用stl“就地构造”提高代码性能已关闭评论

【MacOSX、iOS、跨平台编译】在跨平台编译时MacOSX Serria/XCode是我遇到bug最多的平台

最近被安排来搞定android、ios、mac、windows下的webrtc、ffmpeg和x264的编译问题。

除了由于webrtc配置工程的问题在windows下我自己的搭建环境无法使用,最终求助于之前使用的虚拟机环境以外,android下的webrtc都比较顺利,同样也是编译anroid环境的和windows环境的ffmpeg,相对来说也是比较顺畅(虽然还是出现了一些坎坷)。

但在Mac环境下编译webrtc、ffmpeg和x264就没有那么幸运了。简直就是人间地狱,首先说明一下,这个Mac机原先是有其他开发者在上面编译成功过这三个工程的,到我之后就开始出现了一大堆问题(当然也有可能我用的是用户新帐号的缘故)。

 

人间地狱的开始

  • 先说一说编译webrtc遇到的坑爹问题。由于webrtc编译环境我们只输出静态库,并不输出一个framework或者app,所以并不需要关心太多app层面的问题(如证书相关)。虽知道在webrtc的gyp检查项目中会对证书冲突做检查,由于机器中存在多个证书,导致gyp阶段无法生成正确的编译配置参数。导致折腾了一周,最后才发现和证书有关。虽然这个问题和gyp有一定的关系,但也只是我对mac上编译和交叉编译的被坑的起点。

 

  • 接着是x264和ffmpeg编译时,由于给我的工程之前都是能够成功编译的,现如今拿过来,除了Mac平台可以通过以外,真机和模拟器都不行。折腾来折腾去几天,最后发现是clang去找依赖的时候找错了,找了mac的依赖环境,而不是去找iphoneos的依赖,然后怎么调都没用。很是坑爹,就拿网上的现成脚本来跑也是不行。

最后去查config.log,发现一堆错误,其中ffmpeg的错误还有一个叫做gas-preprocessor.pl的执行错误,由于是通过git直接从网上拿下来的脚本,在没有任何修改的情况下,通过sftp发到mac里面,给了执行权限之后通过命令行直接执行一点问题都没有,但通过configure执行时就一直报没有权限的错,怎么也想不明白;后来试着用curl拿文件,居然通了。当时我就估计如果不是字符集的问题,就是权限标记位的问题。

接着再继续修改关于依赖的问题,仅仅一个交叉编译工具clang,居然在不同的工程里面对同一个路径参数能够出现多种不同的行为,后来还特意看了一下clang是不是GNU开源社区的代码,通过–version看到的内容如下:

Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin16.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

可见这个坑是苹果自己的。可能是由于命令行的长度的不同,导致解析命令行的bug?或者其他什么坑爹问题?反正我是不知道了,近几年开始苹果的产品也不见得有多少优势了,正在被一点点拉小差距。如果不是为了混口饭吃,苹果的任何产品我真的不想去碰!

2017-03-20 | | linux-shell, shell, unix编程环境学习, 图像处理, 音视频_图像相关, 音视频编解码

【MacOSX、iOS、跨平台编译】在跨平台编译时MacOSX Serria/XCode是我遇到bug最多的平台已关闭评论

【MAC、iOS、Webrtc】由于证书问题导致webrtc编译隐形失败问题

由于最近在接手一些脏活累活,所以就被拉来解决一下ios下关于播放设备切换的问题,实际上当听到这个问题的现象是基本可以判断播放设备切换的时候没有重设播放参数引起的。

后面说为了给我个环境去调一下,iMac拿过来很开心的执行编译,谁知道编译隐形失败。。。之所以说隐形失败是gyt_webrtc和ninjia没有报错什么让人感觉在意的错。

捣腾了几天,七弄八弄的最后查到由于在执行gyp_webrtc后通过gyp生成的ninja中有几个主要工程配置没有生成。

当时由于感觉找到完整的问题了,今天过来就直接干脆手动执行后续的步骤把整个编译执行完成。起初发现有问题,因为i386的构架被打包到静态库了,然后网上找到删除掉i386方法,随之删掉i386手工合成最终的包,加入到xcode工程里面跑,结果连接失败,出现符号找不到。

继续查问题,最终还是留意到了gyp_webrtc的错误,错误如下:

iMac:build hyt$ ./ios.sh release
Updating projects from gyp files...
Traceback (most recent call last):
  File "../src/webrtc/build/gyp_webrtc", line 115, in &amp;lt;module&amp;gt;
    gyp_rc = gyp.main(args)
  File "/Users/hyt/webrtc/src/chromium/src/tools/gyp/pylib/gyp/__init__.py", line 538, in main
    return gyp_main(args)
  File "/Users/hyt/webrtc/src/chromium/src/tools/gyp/pylib/gyp/__init__.py", line 523, in gyp_main
    generator.GenerateOutput(flat_list, targets, data, params)
  File "/Users/hyt/webrtc/src/chromium/src/tools/gyp/pylib/gyp/generator/ninja.py", line 2469, in GenerateOutput
    pool.map(CallGenerateOutputForConfig, arglists)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 251, in map
    return self.map_async(func, iterable, chunksize).get()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 567, in get
    raise self._value
AssertionError: Multiple codesigning fingerprints for identity: iPhone Developer

网上查到主要是证书冲突问题。
解决步骤大致如下:

1,列出有效证书

security find-identity

2,寻找证书配置gyp文件

find . -name common.gypi | xargs grep CODE_SIGN_IDENTITY

会看到这么几行:

./chromium/src/build/common.gypi: ‘CODE_SIGN_IDENTITY[sdk=iphoneos*]’: ‘iPhone Developer’,
./chromium/src/build/common.gypi: ‘CODE_SIGN_IDENTITY[sdk=iphoneos*]’: ”,

3,用之前证书列表中Valid identities only的字段替换‘iPhone Developer’里面的内容

 

4,重新执行gyp_webrtc即可

2017-03-01 | | [linux总结], chromium, iOS, 移动开发, 音视频_图像相关

【MAC、iOS、Webrtc】由于证书问题导致webrtc编译隐形失败问题已关闭评论

【c++11、编译】较新版本的chromium和webrtc代码已经开始用c++11了

在最近webrtc的几个版本里,我一直尝试在windows上搭建编译环境。因为用惯了vs 2010,并且vs 2010之后的版本存在一个xp runtime的问题,所以一直想在vs 2010上编译。但是用不行,一直报错。

最近在看c++11标准,对比vs 2010 、vs 2013、vs 2015之后发现确实在c++11的支持上,vs 2015会更全面一些,所以最终还是只能用vs 2015作为编译环境来使用。

2017-02-06 | | win, 编码技巧, 音视频_图像相关

【c++11、编译】较新版本的chromium和webrtc代码已经开始用c++11了已关闭评论

【opencv、颜色存储方式】imread的IMREAD_COLOR方式解码后是BGR方式存储

最近的项目中需要用到将RGB空间转换成HSV空间,转换后一直都感觉不对劲,最后才发现imread中的IMREAD_COLOR参数。

在opencv中的注释中提到IMREAD_COLOR方式是将数据尝试解码成BGR方式存储。

数据解码后,实际在上内存中的数据存储方式确实为BGR,通过imwrite或者imshow时,数据应该会被默认转换成实际的图像格式(没有看代码去考证,因为bmp就是BGR的序列)。

在进行色彩空间转换时,例如:BGR(或RBG) -> HSV时,如果将CV_BGR2HSV和CV_RGB2HSV混淆,最后的结果会引起色彩区域置换。所以就有问题了!

2016-11-30 | | 图像处理, 音视频_图像相关

【opencv、颜色存储方式】imread的IMREAD_COLOR方式解码后是BGR方式存储已关闭评论

【matlab、启动错误】在远程桌面中无法启动matlab问题

最近一直在通过远程桌面的方式使用笔记本,突然发现matlab死活都打不开,出现如下错误

555

 

起初以为安装出问题,后来网上看了下才知道是远程桌面的锅。直接用基本登录,问题解决。

2016-11-22 | | matlab, win, 图像处理, 数据结构 & 算法, 编码技巧, 音视频_图像相关

【matlab、启动错误】在远程桌面中无法启动matlab问题已关闭评论

【chromium、webrtc、gn】引入gn之后下载代码和生成vs工程的方法

按照惯例,还是一如既往的通过代理进行下代码,并生成工程。因为webrtc是chromium里面的一个组件,所以webrtc和chromium的下载和生成工程的方法大同小异。

具体步骤如下:

1. 首先把depot_tools装好。

2. 配置代理

netsh set winhttp proxy 127.0.0.1:10808
set http_proxy=http://127.0.0.1:10808
set https_proxy=https://127.0.0.1:10808

3. 按照官方的步骤,下载代码

mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync

4*. 如果gclient sync过程出现异常,或建议最好执行本步骤

gclient runhooks

5. 通过gn生成vs2015的工程

cd src
gn gen --ide=vs2015 /out/Default

结束。

这个过程中比较头疼的问题就是需要一个稳定的代理

2016-11-14 | | chromium, 音视频_图像相关, 音视频容器, 音视频编解码

【chromium、webrtc、gn】引入gn之后下载代码和生成vs工程的方法已关闭评论

【matlab、c++、0.499】关于matlab和c++在浮点数转整数的问题 – 四舍五入

当用c/c++做浮点数转换成整数时,处理一般都很简单,丢掉小数位置保留整数部分(没有看过具体的汇编,不清楚如果浮点数表达的位置太大,以至于整数溢出的情况)。

 

而在matlab中,浮点数转换成整数时候,会有四舍五入的规则,即:

uint8(0.499) = 0

uint8(0.5) = 1

 

所以在用matlab时,需要注意到数值转换与c/c++的不同。

2016-07-04 | | matlab, 图像处理, 数据结构 & 算法, 编码技巧, 音视频_图像相关

【matlab、c++、0.499】关于matlab和c++在浮点数转整数的问题 – 四舍五入已关闭评论

2016上半年回头看看

最近在看心理学的大学教材,起初动机主要是为了了解自身,以及能够了解他人。不过越看到后面,感觉研究人的心理也越有意思。

可能是成长的过程中,恰好遇到了一些正确且有恰到好处的信息,或者出于自身性格的亲和力;再看心理学这门教材时,发现尽管有时候自身走了错误的路,但至少有能够自己纠正回来。并逐渐养成某些看似很难的好习惯和好规律。

例如:

1,很多人都说我很多事情搞那么清楚做什么,你活着累不累。

2,试着反思过去

3,试着窥视未来

4,试着察言观色

5,试着调整自己的心态和计划

6,有规律的作息和行为

7,设立底线,并针对不同环境和不同时期进行不同的调整

8,改善自身心态的同时也在调整自身的一些行为。

 

 

实际上,通过以上8个方面的行动,这其实是加强自我意识与自我认知;在日常行为中能够很好的做出一些反应和应对。我也庆幸,遇到一些问题时,我没有选择逃避,而是硬着头皮解决并得到了成长。

尽管通过学习心理学的书以后,自身的很多行为和想法,得到了一些说明,并且能够通过“规律性”的东西去评价行为的后果,但实际上最近心理还是在犯嘀咕;是该回头看一看了。

 

按照惯例,还是从工作、生活两个角度入手。

— 工作 —

1,可信赖人越来越少:

1.1 由于性格因素,导致原先可信赖的人在逐渐远离自身,且这些人本身原来就不是100%可信赖

1.2 公司环境混乱,导致大部分人心态发生变化

1.3 本来就没几个可信赖的人

 

2,对前途有所迷茫:

2.1 不理解现在做的事情对未来的职业规划有何作用

2.2 不确定的事情太多

2.3 领导层完全有意或无意不讲清楚意图,导致无头苍蝇状态

2.4 劳动力市场变化太快,有时候跟不上。所谓的“风投”太喜欢造势了。

 

3,过度消耗生命:

3.1 想学习

3.2 神经紧张,怕多休息或多娱乐一分钟,就被淘汰

3.3 想换一个环境

3.4 有所压力和追求

3.5 工作在消耗生命

 

4,总是在试图理解或揣测领导层的意思,但又不明白到底有没有必要,身心都很累。

 

— 生活 —

1,暂时没有进入正轨,还有很多事情需要硬着头皮去解决掉

2,缺乏良好可持续的规律或习惯

3,想要的生活和现在的状态存在一定的不对应或者不一致的情况

 

 

通过上面的情况,可以看出,最近应该在处于弥漫与焦虑中。或者把手头给自己安排的事情抓紧一点,或许能够更快的走出这种状态来。毕竟有一些事情其实已经规划好了,只不过还未到时候,加快步伐可以让时机提前到来。

 

2016-06-16 | | [心理学], [窥视自我], 思考, 编码技巧, 音视频_图像相关

2016上半年回头看看已关闭评论

【Matlab、安装问题、路径问题、环境问题】安装完matlab后,出现各种命令未定义的情况

首次安装完matlab时,在导入授权后,打开发现一堆警告,各种命令不可用,大致内容如下:

Warning: C:\Program Files\MATLAB\R2012a\toolbox\local\pathdef.m not found.
Toolbox Path Cache is not being used. Type ‘help toolbox_path_cache’ for more info
Undefined function or variable ‘ispc’.
Warning: MATLAB did not appear to successfully set the search path. To recover for this session of MATLAB, type “restoredefaultpath;matlabrc”. To find out how to avoid this warning the next time you start MATLAB, type “docsearch problem path” after recovering for this session.
Warning: Duplicate directory name: C:\Program Files\MATLAB\R2012a\toolbox\local.
Warning: Initializing Handle Graphics failed in matlabrc.
This indicates a potentially serious problem in your MATLAB setup,
which should be resolved as soon as possible. Error detected was:
MATLAB:undefinedVarOrClass
Undefined variable “graphics” or class “graphics.internal.initializeMATLABRoot”.
Warning: Initializing Java preferences failed in matlabrc.
This indicates a potentially serious problem in your MATLAB setup,
which should be resolved as soon as possible. Error detected was:
MATLAB:UndefinedFunction
Undefined function ‘usejava’ for input arguments of type ‘char’.
> In matlabrc at 113
Warning: Failed to add default profiler filters.
> In matlabrc at 168
>> rtwintgt -setup
Undefined function ‘rtwintgt’ for input arguments of type ‘char’.

>> help toolbox_path_cache
Undefined function ‘help’ for input arguments of type ‘char’.

 

实际上是安装的时候路径出错,用管理员模式启动,然后执行这个命令:

restoredefaultpath;matlabrc

matlab执行环境变量恢复以后,系统正常可用。

2016-06-07 | | matlab, 图像处理, 数据结构 & 算法, 音视频_图像相关

【Matlab、安装问题、路径问题、环境问题】安装完matlab后,出现各种命令未定义的情况已关闭评论

【图像处理、答题卡、图像识别】图像处理 之 初步分析答题卡上选择题的识别(一)

最近由于项目需要,需要做一个能够自动化阅客观题的东西,则答题方式为纸质答题卡。通过扫描仪或者其他方式,将图像拾取并转换成数字图像。

当然,我本身是拒绝的。实际上,在这一过程中,比较难几点有:

1,拾取后的图像如何做预处理、降噪、灰度化、二值化等问题

2,如何对图像进行抽象(识别)

 

好在目前关于纯粹识别的技术还是有的,所以就假定一个前提;即用户采集转变成的数字图像是噪点较少,且容易做灰度化和二值化的。

于是,在网上找到的一张某地区高考使用的答题卡(下图)。并对该答题卡做一个简单的分析。

 

datika_analyze

 

对该答题卡观察以后,发现答题卡顶部的黑块很可能被用作类似位置同步和校准用。于是得到了下列可能的结论:

1,有1和2字体的两个黑柱子,可能是用于某种标记(或者答题卡传输轨道同步)。

2,其他的小柱子之间的间距是分组,且不等距的。

3,通过结论1和2可得知,有可能能通过这些黑块生成答题卡坐标系,以此来进行图像变换或区域间的距离计算等。

 

通过以上的几个结论可以的出,实际上高考中使用的答题卡在进行识别(或批改)时,除了要找到学生涂黑的选项意外,还需要进一步的判断选项的有效、无效、未作答情况。看来判断答案的有效情况也将会是一个重点和难点。

2016-04-12 | | 图像处理, 思考

【图像处理、答题卡、图像识别】图像处理 之 初步分析答题卡上选择题的识别(一)已关闭评论

【webrtc & h264】不小心又掉大坑里了

最近在看webrtc的最新分支代码,和手里正在跑的代码做了简单的比较以后,顿时发现我已掉入深坑。。。。。

 

我们手里目前正在跑的webrtc代码是2014年最后一个稳定版本。且我们在这个代码上做了一定的修改和二次开发,同时移入了openh264(当时不知道谁决定的)。

现阶段,发现新版本的webrtc已经和手头的webrtc有着天然之别了,大致内容如下:

1,代码框架有所改变。尤其是设备管理,编解码器相关的代码布局

2,和h264编解码器相关的代码,有一个简单实现。即,直接调用ffmpeg中的编码器来实现。但同样支持openh264,只不过工作量会大一些。

3,使用了大量的c++11特性

4,对windows sdk的要求不同。

5,编译难度的增加。虽然gclient能够完成工程配置,但这也严重导致了工程要移动到另外一台电脑上将会是很难的一件事情(工程配置。。。。)。就算运行gclient runhooks,可能也会存在一些乱七八糟的问题。

 

接下来可能需要一点一点去看看openh264和x264到底有多大区别,并有区分的使用。

2016-04-08 | | chromium, 音视频_图像相关, 音视频编解码

【webrtc & h264】不小心又掉大坑里了已关闭评论