3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
fanfuhan OpenCV 教學042 ~ opencv-042-二值化圖像OTSU演算法(THRESH_OTSU) 資料來源: https://fanfuhan.github.io/ https://fanfuhan.github.io/2019/04/13/opencv-042/ GITHUB:https://github.com/jash-git/fanfuhan_ML_OpenCV C++ #include #include using namespace std; using namespace cv; /* * 图像二值寻找算法 – OTSU */ int main() { Mat src = imread("../images/test.png"); if (src.empty()) { cout << "could not load image.." << endl; } imshow("input", src); // 自动阈值寻找与二值化 Mat gray, binary; cvtColor(src, gray, COLOR_BGR2GRAY); double T = threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU); cout << "threshold : " << T << endl; imshow("binary", binary); waitKey(0); return 0; } Python import cv2 as cv import numpy as np # # THRESH_BINARY = 0 # THRESH_BINARY_INV = 1 # THRESH_TRUNC = 2 # THRESH_TOZERO = 3 # THRESH_TOZERO_INV = 4 # src = cv.imread("D:/images/lena.jpg") cv.namedWindow("input", cv.WINDOW_AUTOSIZE) cv.imshow("input", src) h, w = src.shape[:2] # 自动阈值分割 OTSU gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) print("ret :", ret) cv.imshow("binary", binary) result = np.zeros([h, w*2, 3], dtype=src.dtype) result[0:h,0:w,:] = src result[0:h,w:2*w,:] = cv.cvtColor(binary, cv.COLOR_GRAY2BGR) cv.putText(result, "input", (10, 30), cv.FONT_ITALIC, 1.0, (0, 0, 255), 2) cv.putText(result, "binary, threshold = " + str(ret), (w+10, 30), cv.FONT_ITALIC, 1.0, (0, 0, 255), 2) cv.imshow("result", result) cv.imwrite("D:/binary_result.png", result) cv.waitKey(0) cv.destroyAllWindows()

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦