//圖片讀入時注意圖片格式,如果格式不符合轉化為符合格式再運行
#include <iostream> #include <opencv2/opencv.hpp> using namespace cv; int main(int argc, char** argv) { cv::Mat image = cv::imread("../test.bmp", CV_LOAD_IMAGE_GRAYSCALE); imshow("testSrc", image); if (image.empty()) { std::cout << "read image failure" << std::endl; return -1; } // 全局二值化 int th = 100; cv::Mat global; cv::threshold(image, global, 70, 255, CV_THRESH_BINARY_INV); // 局部二值化 int blockSize = 25; int constValue = 10; cv::Mat local; cv::adaptiveThreshold(image, local, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY_INV, blockSize, constValue); cv::imwrite("global.jpg", global); cv::imwrite("local.jpg", local); cv::imshow("globalThreshold", global); cv::imshow("localThreshold", local); cv::waitKey(0); return 0; }
原圖:
全局二值化效果圖
自適應二值化