opencv中使用imwrite写图像之后,保存下来的图像竟然是马赛克的样子!!!
终于改好之后,用这篇小笔记记录我的科研瓶颈~
一、问题所在
马赛克样的图:
我需要的理想图片:
二、解决方法
怀疑了好多地方,也分别在拍摄前后imshow了照片,最后感觉还是imwrite的问题~ 不知道这样子为什么就成功了 但终究还算是有个好效果~
1、摄像头分辨率设置
要和你自己的摄像头分辨率相同
captureleft.set(CAP_PROP_FRAME_WIDTH, 1920.0); //设置摄像头采集图像分辨率
captureleft.set(CAP_PROP_FRAME_HEIGHT, 1080.0);
2、参数确定
imwrite的声明如下:
CV_EXPORTS_W bool imwrite( const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());
第三个参数有JPEG 、PNG、BMP等格式可以选择; 我本来用的是JPEG,图片质量(CV_IMWRITE_JPEG_QUALITY)也选择了100,但仍然是马赛克…… 改成PNG的格式后,就好了???大概是因为JPEG格式会有一些压缩,而BMP、PNG是无损压缩的。
param.push_back(CV_IMWRITE_PNG_COMPRESSION);
param.push_back(9);
3、图片保存
记得改成.png格式~