您的位置:首页 > 编程语言 > C语言/C++

【日志】2014_4_4 breakpad & extern & 图片相似度浅谈

2014-04-04 08:49 176 查看
昨天的一篇日志由于涉及方面比较多,好像有不少的访问量啊,怎么就没有人评论呢,哪怕是吐槽一下记的很乱,没有条理呢!!!
求吐槽!!!

临时想起来,先记着:

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互转也有公式,公式都上网搜吧,都有。。。

其他改进,将图片先分成几块,分别计算,取中间的,去边,按照图片中的色块轮廓,不同的复杂度,根据需求不同,注意效率!!!求大牛补充!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  日志 breakpad c++ 图片