Ubuntu下,在Qt+OpenCV开发项目,在Label里面显示一幅用cvLoadImage加载的图片,图片格式jpg,在自己电脑上没问题,结果移动到另一台同样Ubuntu/Qt/OpenCV版本的电脑就出现问题:
Signal received
The inferior stopped because it received a signal from the Operating System.
Signal name : SIGSEGV
Signal meaning : Segmentation fault
去网上搜了一下,这个算是Qt的经典错误,是出现了空指针,调试后发现是cvLoadImage函数的错误,也就是图片没有读进来,于是按照如下思路解决:
(1)图片地址,这个显而易见,不同电脑下绝对路径不同,这个错误轻易不会犯吧;
(2)修改地址后,在Qt里面清理项目,删除编译出来的.o文件,注意,建议不同电脑移动以后,把makefile文件也删除,这个清理工具不会清理,但是之前我遇到过问题就是只清理项目了不管用,删掉makefile重新编译就好了,反正makefile文件Qt可以一块生成,删掉也不麻烦;
(3)修改完后,还是不可以,真的有点莫名其妙的感觉,因为其他配置都是一样的,后来写一个极其简单的cvLoadImage程序,还是不行,于是我猜测是不是图像格式的问题,又重新生成一幅png格式的图片,结果就行了!