问题:在项目中用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.****.net/mjlsuccess/article/details/12401839
相关文章
- vs2010 opencv2.4.10 配置过程出现的问题 & mfc打开图片
- 【机器学习入门笔记4:OpenCV图片的写入和不同图片质量保存】
- 用opencv抽取视频的帧并保存为连续的图片
- Chrome浏览器无法将网页中的图片保存到本地的问题
- 使用OpenCV+VS打开图片时显示Debug Error! abort() has been called的报错问题解决
- 微信小程序保存图片至相册(解决saveimagetophotosalbum:fail invalid file type的问题和saveImageToPhotosAlbum:fail auth deny的问题)
- 解决谷歌浏览器图片保存为JFIF格式的问题
- matlab保存图片成eps格式不全,导致latex中图片显示不全的问题
- 【opencv+python】图片的保存(有损压缩、无损压缩)
- javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作