【日志】2014_4_4 breakpad & extern & 图片相似度浅谈
2014-04-04 08:49
197 查看
昨天的一篇日志由于涉及方面比较多,好像有不少的访问量啊,怎么就没有人评论呢,哪怕是吐槽一下记的很乱,没有条理呢!!!
求吐槽!!!
临时想起来,先记着:
google-breakpad是个强大的C++ crash收集程序,要分两步走,客户端和服务器
客户端要在源代码中包含google-breakpad的头文件,回调函数和定义exception_handler变量(强烈注意这个变量没有不同于其他的变量,详情可以看源代码),效果从定义起后,只要改变量没有析构就有效,甚至可以多定义几个。。。
详情可以见源代码中的linux实例,我linux下跑通了,windows下没有跑通,也没具体研究。。。求大神搭救
在android下由于与linux相似,代码不变
不过其中有http_upload.cc文件,实现的方式十分奇怪。。。
它默认libcurl.so为系统自带库,或在系统变量中可以找到。。。明明找不到好吗?
害我去下,不过还好有同事告诉我,cocos2d-x中是包含了curl库的。。。
于是,果断修改http_upload.cc的实现。。。
它原本是先读出.so库文件中的实现赋给函数指针,再执行该指针,详见源码
(附加shell搜索文件中内容find . -name '*.cc' | xargs grep "find_word")
将其中的各种读赋值再执行,修改为直接执行,包含头文件哦。。。修改android.mk中的include_c_source中的路径使之包含cocos2d-x中的curl实现!!
今天的工作对以前的工作有不少修正啊。。。
首先,android.mk中include_src_source包含所有的工程的实现文件,为了android.mk的条理清晰,可以讲自己的主工程也作为一个普通的库导入(挺重要的,害我找了一上午,都不知道为什么包含了,编译器还找不到,要在该cpp文件的库的android.mk的include_c_source中包含。。。)!!
这样大框架里就只有各种的导入,各个库中有各种包含实现的Cpp文件
其中,include_c_source只需添加所需头文件所在的目录就可以了。。。注意可以各种正则表达式啊,shell熟的可以各种搞起,求路过
4000
的推荐好的shell教程!!
application.mk这个文件之前有讲过定义宏变量,今天居然注意到编译c++时,还可以设置参数std=gnu++11
这里可以设置各种c++语言的版本,有c++0x,c++11,c89,c99,gnu++0x,gnu++11等,不同版本编译时还有区别,c++菜鸟表示今天才知道。。。
虽然还是不知道,有什么区别,求大牛指点!!!
当然还有其他的参数 -werror什么的,具体功效完全看一边就忘。。。
表示今天被extern关键字给坑了,之前老是没有当回事。。。
正确用法,可以在多地多次声明,但是特别注意只能,且如果使用的话,必须在所有的函数体外,单独对变量定义一次!!!
extern int *i; //注意不能同时声明加定义
int* i=NULL; //注意这是定义,且只能有一次,再注意在变量i前面的int*是告诉编译器要分配的内存大小的,十分重要!!!
如果要在另一个文件中使用,需要再声明一下,告诉编译器,该变量定义在别处!!!
编译原理没有学,真的有点坑。。。找一机会学了。。。
顺便说一下,static定义的全局变量只有自己的该文件中可以访问,但还是要定义分配空间,注意经常link错link2019,2001什么的。。。
今天还对图片有了新的认识,bmp是位图,jpeg有损压缩,一般在1/10至1/40之间。。。还有UFO格式。。。
貌似ios用的多的是pvr,貌似针对这进行了硬件优化,直接解码,效率高
android有google推的webp,貌似压缩率在算法上很高!etc1好像渲染不错
opencv中根据图片的文件头,各种格式不同的长度的文件头,如BM,/xxx/xxx/xxx等。。。调用不同的decode,incode来解码和编码。。。
cocos2d-x中根据文件的后缀名,调用不同的函数。。。
文件头甚至还包含地理坐标信息。。。
图片相似度检测的一种方式:
先将rgb的转换为灰度图,rgb转灰度有公式(权值不同),计算不同的灰度的像素点个数,归一化即算出百分比,进行距离比较,不同灰度点个数的差的平方和,定阈值
测试集(庞大)和训练集(随机小,修正阈值)
可以使用rgb或mvs或其他不同颜色空间,注意rgb和mvs互转也有公式,公式都上网搜吧,都有。。。
其他改进,将图片先分成几块,分别计算,取中间的,去边,按照图片中的色块轮廓,不同的复杂度,根据需求不同,注意效率!!!求大牛补充!!!
求吐槽!!!
临时想起来,先记着:
google-breakpad是个强大的C++ crash收集程序,要分两步走,客户端和服务器
客户端要在源代码中包含google-breakpad的头文件,回调函数和定义exception_handler变量(强烈注意这个变量没有不同于其他的变量,详情可以看源代码),效果从定义起后,只要改变量没有析构就有效,甚至可以多定义几个。。。
详情可以见源代码中的linux实例,我linux下跑通了,windows下没有跑通,也没具体研究。。。求大神搭救
在android下由于与linux相似,代码不变
不过其中有http_upload.cc文件,实现的方式十分奇怪。。。
它默认libcurl.so为系统自带库,或在系统变量中可以找到。。。明明找不到好吗?
害我去下,不过还好有同事告诉我,cocos2d-x中是包含了curl库的。。。
于是,果断修改http_upload.cc的实现。。。
它原本是先读出.so库文件中的实现赋给函数指针,再执行该指针,详见源码
(附加shell搜索文件中内容find . -name '*.cc' | xargs grep "find_word")
将其中的各种读赋值再执行,修改为直接执行,包含头文件哦。。。修改android.mk中的include_c_source中的路径使之包含cocos2d-x中的curl实现!!
今天的工作对以前的工作有不少修正啊。。。
首先,android.mk中include_src_source包含所有的工程的实现文件,为了android.mk的条理清晰,可以讲自己的主工程也作为一个普通的库导入(挺重要的,害我找了一上午,都不知道为什么包含了,编译器还找不到,要在该cpp文件的库的android.mk的include_c_source中包含。。。)!!
这样大框架里就只有各种的导入,各个库中有各种包含实现的Cpp文件
其中,include_c_source只需添加所需头文件所在的目录就可以了。。。注意可以各种正则表达式啊,shell熟的可以各种搞起,求路过
4000
的推荐好的shell教程!!
application.mk这个文件之前有讲过定义宏变量,今天居然注意到编译c++时,还可以设置参数std=gnu++11
这里可以设置各种c++语言的版本,有c++0x,c++11,c89,c99,gnu++0x,gnu++11等,不同版本编译时还有区别,c++菜鸟表示今天才知道。。。
虽然还是不知道,有什么区别,求大牛指点!!!
当然还有其他的参数 -werror什么的,具体功效完全看一边就忘。。。
表示今天被extern关键字给坑了,之前老是没有当回事。。。
正确用法,可以在多地多次声明,但是特别注意只能,且如果使用的话,必须在所有的函数体外,单独对变量定义一次!!!
extern int *i; //注意不能同时声明加定义
int* i=NULL; //注意这是定义,且只能有一次,再注意在变量i前面的int*是告诉编译器要分配的内存大小的,十分重要!!!
如果要在另一个文件中使用,需要再声明一下,告诉编译器,该变量定义在别处!!!
编译原理没有学,真的有点坑。。。找一机会学了。。。
顺便说一下,static定义的全局变量只有自己的该文件中可以访问,但还是要定义分配空间,注意经常link错link2019,2001什么的。。。
今天还对图片有了新的认识,bmp是位图,jpeg有损压缩,一般在1/10至1/40之间。。。还有UFO格式。。。
貌似ios用的多的是pvr,貌似针对这进行了硬件优化,直接解码,效率高
android有google推的webp,貌似压缩率在算法上很高!etc1好像渲染不错
opencv中根据图片的文件头,各种格式不同的长度的文件头,如BM,/xxx/xxx/xxx等。。。调用不同的decode,incode来解码和编码。。。
cocos2d-x中根据文件的后缀名,调用不同的函数。。。
文件头甚至还包含地理坐标信息。。。
图片相似度检测的一种方式:
先将rgb的转换为灰度图,rgb转灰度有公式(权值不同),计算不同的灰度的像素点个数,归一化即算出百分比,进行距离比较,不同灰度点个数的差的平方和,定阈值
测试集(庞大)和训练集(随机小,修正阈值)
可以使用rgb或mvs或其他不同颜色空间,注意rgb和mvs互转也有公式,公式都上网搜吧,都有。。。
其他改进,将图片先分成几块,分别计算,取中间的,去边,按照图片中的色块轮廓,不同的复杂度,根据需求不同,注意效率!!!求大牛补充!!!
相关文章推荐
- 2014_03_30工作日志:error C2146: syntax error : missing ';' before identifier 'LPTSTR'
- 2014_03_28工作日志:error C2065: 'IOCTL_DISK_DELETE_DRIVE_LAYOUT' : undeclared identifier
- 【日志】2014_4_3 git & android.mk & cocos2d-x
- extern ''C'' 的 学习浅谈
- 浅谈 Glide - BitmapPool 的存储时机 & 解答 ViewTarget 在同一View显示不同的图片时,总用同一个 Bitmap 引用的原因
- 【日志】2014_4_10 git & django
- <Office+Excel>CSV日志整理倍速版
- 闲暇思索——2014 即将过逝
- 浅谈CSS Sprites技术以及图片优化 〔背景图整合〕
- SmartUpload实现图片上传&带预览功能
- 6410平台500W摄像头调试过程 && 拍照偏绿和图片保存等BUG
- extern "C" 详解
- SQL2008 的收缩日志&log日志丢失恢复
- SQL Server 2014 日志传送部署(1):日志传送概述
- 解读ASP.NET 5 & MVC6系列(9):日志框架
- "android:process"---由日志引发的大灾难!
- MSSQL收缩事务日志&日志文件过大无法收缩
- [替罪羊树 动态点分治 替罪羊式重构] BZOJ 3435 [Wc2014]紫荆花之恋 & UOJ #55 【WC2014】紫荆花之恋
- java 获取图片属性、破损图片处理、写入日志、连接数据库