[数字图像处理]VC++ 实现图片的二值化显示
在上一篇的内容中已经介绍了如何实现图片的打开,这篇来实现黑白的二值转化。
二值化:
在一张只有黑色和白色的图像中,这种图像的像素灰度值无论在什么数据类型中只有最大值和最小值两种取值,因此称为二值图像。
在之前的代码中添加下面的代码,转换黑白二值:
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
int main(int argc,char** argv)
{
cv::Mat img = cv::imread("/home/qiy/桌面/test02.jpg");
if(img.empty())
{
std::cout<<"error!"<<std::endl;
return;
}
//因为已经是二值化的图片,无需再次二值化
//Mat gray;
//cv::cvtColor(img, gray, COLOR_BGR2GRAY);
cv::Mat gray_binary;
//灰度图像二值化
//THRESH_BINARY_INV--灰度大于阈值125则设为0, 其他值为最大
cv::threshold(img, gray_binary, 125,255, cv::THRESH_BINARY_INV);
cv::imshow("gray_binary", gray_binary);//grar_binary为二值化后图片
cv::imwrite("/home/qiy/test03.png", gray_binary);
cv::waitKey(0);
return 0;
}
最终实现图片的转化
转化后