者这里使用opencv3.2 + vs 2015 进行示例:

// bin.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include<iostream>
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;


int main()
{
Mat srcImage;
//在你的工程下放一张图片名为6.jpg
srcImage = imread("6.jpg");
imshow("6", srcImage);
if (srcImage.channels() > 1)
cvtColor(srcImage, srcImage, CV_RGB2GRAY);
Mat srcImageBin;


threshold(srcImage, srcImageBin, 128, 255, THRESH_BINARY_INV);
imshow("原始图转化二值图", srcImageBin);
cout << srcImageBin << endl << endl;


//不更改图片质量
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);  //选择jpeg
compression_params.push_back(255); //在这个填入你要的图片质量(255为无损保存,一定要进行255,否则图像失真)


imwrite("6bin.jpg", srcImageBin,compression_params);



Mat srcImage1;
srcImage1 = imread("6bin.jpg", CV_LOAD_IMAGE_GRAYSCALE);
imshow("6bin", srcImage1);
cout << srcImage1 << endl;
waitKey(0);
    return 0;
}

以下为结果示例:可以发现经过参数设置之后保存后的图像没有失真,像素值一样。

imwrite函数保存二值图的问题解决
imwrite函数保存二值图的问题解决
imwrite函数保存二值图的问题解决

这就是6.jpg imwrite函数保存二值图的问题解决

相关文章:

  • 2021-08-22
  • 2022-12-23
  • 2022-12-23
  • 2021-11-14
  • 2021-06-02
  • 2022-12-23
  • 2022-01-03
  • 2021-10-20
猜你喜欢
  • 2021-09-06
  • 2022-12-23
  • 2022-12-23
  • 2021-06-21
  • 2021-08-18
相关资源
相似解决方案