opencv imwrite保存图片花屏的问题

  • 问题:在项目中用opencv的imwrite保存图片出现花屏的问题,以下图:
    函数

  • 思路:
    1.  由于项目中的图像数据(float类型,0-255)是在GPU中,保存的话:能够用CPU保存图片,也能够用GPU保存图片。GPU保存图片没有花屏的现象,所以,初步怀疑,是由于数据从GPU拷贝到CPU的时候丢了。
        后来测试,发现拷贝到CPU的数据,再拷回GPU保存依然没有问题。
    2. 后来发现,将须要保存的图片格式改成CV_32F3C后,保存不存在问题。而以前CV_8U3C的就会出现花屏,赋值的话就是简单的将float的值赋给像素点。

  • 解决方法:
    1. 利用opencv的convertTo函数,对Mat的格式进行转换:
     
     2. 若想直接赋值:观察以前的花屏的图像,是白色和黑色的附近出现花屏。所以,颇有可能与0和255附近的溢出有关:
            这个地方我也不太明白:本身写的clip_value也是处理0-255以前的越界问题,不行,出现花屏。改成opencv自带的saturate_cast即可以了,但网上说saturate_cast的原理就是小于0的赋值0,大于255的赋值255.    在网上看见有一我的和我遇到类似的状况,mark一下:http://blog.csdn.net/mjlsuccess/article/details/12401839
相关文章
相关标签/搜索