cv.imwrite写入图片模糊、马赛克!

it2022-05-05  185

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格式~


最新回复(0)