二值化处理
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/calib3d/calib3d.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat imag, result;
imag = imread("mv4.jpg",16);
namedWindow("原图", 0);
imshow("原图", imag);
result = imag.clone(); // 不知道这是干啥的。
threshold(imag, result, 100, 250, THRESH_OTSU);//otsu
namedWindow("二值化图像");
imshow("二值化图像", result);
waitKey(2000);
return 0;
}
笔记
image = imread (" 图片文件 ",n);
n= -1, //返回包含alpha通道的加载图像
= 0, //返回一个灰度图像
= 1, //返回一个BGR通道的图像
= 2, //当输入具有相应的深度时返回16位/ 32位图像,否则将其转换为8位。.
= 4, //则以任何可能的颜色格式读取图像。
= 8, //使用GDAL的驱动加载图像。
= 16, //将图像转换为单通道灰度图像,图像大小减少1/2。
= 17, //转换图像的3通道BGR彩色图像和图像的大小减少1/2。
= 32, //将图像转换为单通道灰度图像,图像大小减少1/4。
= 33, //转换图像的3通道BGR彩色图像和图像的大小减少1/4。
= 64, //将图像转换为单通道灰度图像,图像大小减少1/8。
= 65, //转换图像的3通道BGR色彩图像和图像大小减少1/8。
= 128 //不旋转图像根据EXIF的定位标志。
namedWindow("原图“,n)
n= 1 窗口大小自动适应图片大小,并且不可手动更改
= 2 用户可以改变这个窗口大小
=3 窗口创建的时候会支持OpenGL( OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。
它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。)
threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type);其中:
src:输入矩阵(8位或32位浮点型),必须是灰度图像
dst:输出矩阵,与输入矩阵的类型相同
thresh:阈值
maxval:阈值后的最大值(如果有可能用到)
type:阈值类型
类型:
THRESH_OTSU(自动获取,最大类间方差法 适合有双峰的)
THRESH_BINARY
THRESH_BINARY_INV
THRESH_TRUNC
THRESH_TOZERO
THRESH_TOZERO_INV
THRESH_MASK
THRESH_TRIANGLE