溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

OpenCV C++版圖像動(dòng)態(tài)閾值處理

發(fā)布時(shí)間:2024-08-26 16:35:42 來(lái)源:億速云 閱讀:86 作者:小樊 欄目:編程語(yǔ)言

OpenCV是一個(gè)開(kāi)源的計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)庫(kù),它提供了大量的圖像處理函數(shù)

首先,確保已經(jīng)安裝了OpenCV庫(kù)。然后,創(chuàng)建一個(gè)名為main.cpp的文件,并添加以下代碼:

#include<iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
    // 讀取輸入圖像
    Mat input_image = imread("input.jpg", IMREAD_GRAYSCALE);

    if (input_image.empty()) {
        cout << "無(wú)法打開(kāi)或找到輸入圖像"<< endl;
        return -1;
    }

    // 創(chuàng)建窗口
    namedWindow("Input Image", WINDOW_NORMAL);
    namedWindow("Output Image", WINDOW_NORMAL);

    // 顯示原始圖像
    imshow("Input Image", input_image);

    // 創(chuàng)建輸出圖像
    Mat output_image = Mat::zeros(input_image.size(), CV_8UC1);

    // 設(shè)置動(dòng)態(tài)閾值參數(shù)
    int blockSize = 5;
    double offset = 10;

    // 應(yīng)用自適應(yīng)閾值處理
    adaptiveThreshold(input_image, output_image, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, blockSize, offset);

    // 顯示處理后的圖像
    imshow("Output Image", output_image);

    // 等待按鍵
    waitKey(0);

    // 銷毀窗口
    destroyAllWindows();

    return 0;
}

在這個(gè)例子中,我們首先讀取一個(gè)名為input.jpg的灰度圖像。然后,我們創(chuàng)建兩個(gè)窗口,一個(gè)用于顯示原始圖像,另一個(gè)用于顯示處理后的圖像。接下來(lái),我們使用adaptiveThreshold函數(shù)應(yīng)用自適應(yīng)閾值處理。最后,我們顯示處理后的圖像,并等待用戶按鍵。

要編譯和運(yùn)行此程序,請(qǐng)使用以下命令:

g++ -o main main.cpp `pkg-config --cflags --libs opencv4`
./main

這將編譯并運(yùn)行程序,顯示原始圖像和處理后的圖像。你可以通過(guò)調(diào)整blockSizeoffset參數(shù)來(lái)改變動(dòng)態(tài)閾值處理的效果。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI