二 值 图 像 二值图像 二值图像
1.视频教程:
B站、网易云课堂、腾讯课堂
2.代码地址:
Gitee
Github
3.存储地址:
Google云
百度云:
提取码:
1.灰度与二值图像
灰度图像:单通道,取值范围0~255
二值图像:单通道,取值0(黑色)与255(白色)
2.5种二值和阈值化方式
输入:原图和阈值T
5种方式:
- 大于T 255 else 0 :二值化
- 小于T 255 else 0 :二值化
- 小于T保持原值else T :阈值化
- 小于T 0else原值 :阈值化
- 大于T0 else 原值 :阈值化
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = imread("E:/cats.jpg", IMREAD_UNCHANGED);
if (src.empty()) {
printf("image is empty!!!");
return -1;
}
namedWindow("image", WINDOW_FREERATIO);
imshow("image", src);
Mat gray, binary;
cvtColor(src, gray, COLOR_BGR2GRAY);
imshow("gray", gray);
threshold(gray, binary, 127, 255, THRESH_BINARY);
imshow("binary", binary);
waitKey(0);
destroyAllWindows();
return 0;
}

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = imread("E:/cats.jpg", IMREAD_UNCHANGED);
if (src.empty()) {
printf("image is empty!!!");
return -1;
}
namedWindow("image", WINDOW_FREERATIO);
imshow("image", src);
Mat gray, binary;
cvtColor(src, gray, COLOR_BGR2GRAY);
imshow("gray", gray);
// 1
threshold(gray, binary, 127, 255, THRESH_BINARY);
imshow("THRESH_BINARY", binary);
// 2
threshold(gray, binary, 127, 255, THRESH_BINARY_INV);
imshow("THRESH_BINARY_INV", binary);
// 3
threshold(gray, binary, 127, 255, THRESH_TRUNC);
imshow("THRESH_TRUNC", binary);
// 4
threshold(gray, binary, 127, 255, THRESH_TOZERO);
imshow("THRESH_TOZERO", binary);
// 5
threshold(gray, binary, 127, 255, THRESH_TOZERO_INV);
imshow("THRESH_TOZERO_INV", binary);
waitKey(0);
destroyAllWindows();
return 0;
}

本文介绍二值图像的基本概念及五种不同的阈值处理方法,包括二值化与阈值化的实现,并通过OpenCV示例代码展示如何进行图像处理。
3069

被折叠的 条评论
为什么被折叠?



