国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【opencv】示例-inpaint.cpp 圖像修復(fù)是通過填充損壞圖像部分從而修復(fù)這些損壞的過程...

這篇具有很好參考價(jià)值的文章主要介紹了【opencv】示例-inpaint.cpp 圖像修復(fù)是通過填充損壞圖像部分從而修復(fù)這些損壞的過程...。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【opencv】示例-inpaint.cpp 圖像修復(fù)是通過填充損壞圖像部分從而修復(fù)這些損壞的過程...,opencv,人工智能,計(jì)算機(jī)視覺

原始圖像

【opencv】示例-inpaint.cpp 圖像修復(fù)是通過填充損壞圖像部分從而修復(fù)這些損壞的過程...,opencv,人工智能,計(jì)算機(jī)視覺

這段代碼展示了一個(gè)使用OpenCV庫進(jìn)行圖像修復(fù)的例子。它首先包含了處理圖像編碼、解碼、顯示、處理和照片處理所必要的OpenCV模塊的頭文件。然后利用cv和std命名空間下的類和方法。通過定義一個(gè)鼠標(biāo)回調(diào)函數(shù)onMouse來處理圖像上的繪圖操作,并通過主函數(shù)main處理圖像讀取,修復(fù)與顯示。

整體功能是:程序允許用戶用鼠標(biāo)在圖像上繪制區(qū)域,然后用指定的修復(fù)算法(圖像修復(fù)算法)來修復(fù)這些區(qū)域。用戶可以通過按鍵來選擇恢復(fù)原始圖像或者運(yùn)行修復(fù)算法,最后顯示修復(fù)后的結(jié)果。

#include "opencv2/imgcodecs.hpp" // 包含OpenCV模塊中處理圖像編碼和解碼的頭文件
#include "opencv2/highgui.hpp" // 包含OpenCV模塊中用于創(chuàng)建界面以顯示和保存圖像和視頻的頭文件
#include "opencv2/imgproc.hpp" // 包含OpenCV模塊中處理圖像處理的頭文件
#include "opencv2/photo.hpp" // 包含OpenCV模塊中處理照片的頭文件


#include <iostream> // 包含標(biāo)準(zhǔn)輸入輸出流的頭文件


using namespace cv; // 使用命名空間cv,這樣就可以直接使用OpenCV中定義的類和方法,而不需要加cv::前綴
using namespace std; // 使用命名空間std,便于使用標(biāo)準(zhǔn)庫中的功能


static void help( char** argv ) // 定義幫助函數(shù),打印程序使用方法
{
    cout << "\nCool inpainging demo. Inpainting repairs damage to images by floodfilling the damage \n"
            << "with surrounding image areas.\n"
            "Using OpenCV version %s\n" << CV_VERSION << "\n"
            "Usage:\n" << argv[0] <<" [image_name -- Default fruits.jpg]\n" << endl;


    cout << "Hot keys: \n"
        "\tESC - quit the program\n"
        "\tr - restore the original image\n"
        "\ti or SPACE - run inpainting algorithm\n"
        "\t\t(before running it, paint something on the image)\n" << endl;
}


Mat img, inpaintMask; // 聲明Mat類變量img和inpaintMask,分別用于存儲(chǔ)圖像和繪制修復(fù)區(qū)域的掩碼
Point prevPt(-1,-1); // 聲明Point類變量prevPt,并初始化為(-1,-1),用于存儲(chǔ)上一個(gè)繪圖點(diǎn)的位置


static void onMouse( int event, int x, int y, int flags, void* ) // 定義鼠標(biāo)回調(diào)函數(shù),用于處理鼠標(biāo)事件
{
    if( event == EVENT_LBUTTONUP || !(flags & EVENT_FLAG_LBUTTON) )
        prevPt = Point(-1,-1);
    else if( event == EVENT_LBUTTONDOWN )
        prevPt = Point(x,y);
    else if( event == EVENT_MOUSEMOVE && (flags & EVENT_FLAG_LBUTTON) )
    {
        Point pt(x,y);
        if( prevPt.x < 0 )
            prevPt = pt;
        line( inpaintMask, prevPt, pt, Scalar::all(255), 5, 8, 0 ); // 在掩碼圖像上繪制白色線條
        line( img, prevPt, pt, Scalar::all(255), 5, 8, 0 ); // 在原圖上繪制白色線條
        prevPt = pt;
        imshow("image", img); // 顯示圖像
    }
}


int main( int argc, char** argv ) // 主函數(shù)入口
{
    cv::CommandLineParser parser(argc, argv, "{@image|fruits.jpg|}"); // 解析命令行參數(shù)
    help(argv); // 調(diào)用幫助函數(shù)顯示使用方法


    string filename = samples::findFile(parser.get<string>("@image")); // 獲取圖像文件的路徑
    Mat img0 = imread(filename, IMREAD_COLOR); // 讀取圖像文件
    if(img0.empty()) // 如果圖像為空,則顯示錯(cuò)誤信息并返回
    {
        cout << "Couldn't open the image " << filename << ". Usage: inpaint <image_name>\n" << endl;
        return 0;
    }


    namedWindow("image", WINDOW_AUTOSIZE); // 創(chuàng)建顯示圖像的窗口


    img = img0.clone(); // 克隆原始圖像
    inpaintMask = Mat::zeros(img.size(), CV_8U); // 創(chuàng)建掩碼圖像,并初始化所有像素為0


    imshow("image", img); // 顯示原始圖像
    setMouseCallback( "image", onMouse, NULL); // 設(shè)置鼠標(biāo)回調(diào)函數(shù)


    for(;;) // 無限循環(huán),等待用戶輸入
    {
        char c = (char)waitKey(); // 等待鍵盤輸入


        if( c == 27 ) // 如果按下ESC鍵,則退出程序
            break;


        if( c == 'r' ) // 如果按下'r'鍵,則恢復(fù)原始圖像
        {
            inpaintMask = Scalar::all(0);
            img0.copyTo(img);
            imshow("image", img);
        }


        if( c == 'i' || c == ' ' ) // 如果按下'i'鍵或空格鍵,則運(yùn)行修復(fù)算法
        {
            Mat inpainted;
            inpaint(img, inpaintMask, inpainted, 3, INPAINT_TELEA); // 運(yùn)行修復(fù)算法
            imshow("inpainted image", inpainted); // 顯示修復(fù)后的圖像
        }
    }


    return 0; // 程序結(jié)束
}
inpaint(img, inpaintMask, inpainted, 3, INPAINT_TELEA);

【opencv】示例-inpaint.cpp 圖像修復(fù)是通過填充損壞圖像部分從而修復(fù)這些損壞的過程...,opencv,人工智能,計(jì)算機(jī)視覺文章來源地址http://www.zghlxwxcb.cn/news/detail-857099.html

到了這里,關(guān)于【opencv】示例-inpaint.cpp 圖像修復(fù)是通過填充損壞圖像部分從而修復(fù)這些損壞的過程...的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • AOT-GAN-for-Inpainting項(xiàng)目解讀|使用AOT-GAN進(jìn)行圖像修復(fù)

    AOT-GAN-for-Inpainting項(xiàng)目解讀|使用AOT-GAN進(jìn)行圖像修復(fù)

    項(xiàng)目地址: https://github.com/researchmm/AOT-GAN-for-Inpainting 基于pytorch實(shí)現(xiàn) 論文地址: https://arxiv.org/abs/2104.01431 開源時(shí)間: 2021年 項(xiàng)目簡(jiǎn)介: AOT-GAN-for-Inpainting是一個(gè)開源的圖像修復(fù)項(xiàng)目,其對(duì) Places2 數(shù)據(jù)集的效果表明,我們的模型在 FID 方面明顯優(yōu)于最先進(jìn)的模型,相對(duì)改進(jìn)了 1

    2024年01月22日
    瀏覽(20)
  • 【圖像修復(fù)】AOT-GAN《Aggregated Contextual Transformations for High-Resolution Image Inpainting》

    【圖像修復(fù)】AOT-GAN《Aggregated Contextual Transformations for High-Resolution Image Inpainting》

    提出用于高分辨率圖像修復(fù)的aggregated contextual transformations(AOT),它允許捕獲信息豐富的遠(yuǎn)程上下文和豐富的感興趣模式,以進(jìn)行上下文推理。 設(shè)計(jì)了一個(gè)新的掩模預(yù)測(cè)任務(wù)來訓(xùn)練用于圖像修復(fù)的判別器,使判別器可以區(qū)分真實(shí)patch和合成patch,從而有助于生成器合成細(xì)粒度紋

    2023年04月08日
    瀏覽(19)
  • 【深度學(xué)習(xí)】Inst-Inpaint: Instructing to Remove Objects with Diffusion Models,指令式圖像修復(fù)

    【深度學(xué)習(xí)】Inst-Inpaint: Instructing to Remove Objects with Diffusion Models,指令式圖像修復(fù)

    論文:https://arxiv.org/abs/2304.03246 code:http://instinpaint.abyildirim.com/ 圖像修復(fù)任務(wù)是指從圖像中擦除不需要的像素,并以語義一致且逼真的方式填充它們。傳統(tǒng)上,希望被擦除的像素由二值化掩碼定義。從應(yīng)用的角度來看,用戶需要為他們想要去除的對(duì)象生成這些掩碼,這可能耗時(shí)

    2024年02月14日
    瀏覽(29)
  • 【opencv】示例-stereo_calib.cpp 基于OpenCV的立體視覺相機(jī)校準(zhǔn)的完整示例

    【opencv】示例-stereo_calib.cpp 基于OpenCV的立體視覺相機(jī)校準(zhǔn)的完整示例

    這段代碼是一個(gè)用于執(zhí)行立體視覺系統(tǒng)校準(zhǔn)的應(yīng)用程序的主函數(shù)main。它按以下步驟執(zhí)行: 初始化用于指定棋盤尺寸、圖像列表文件名、是否展示校正結(jié)果等參數(shù)的變量。 解析命令行輸入的參數(shù),其中包括棋盤的寬度、高度、類型、格子大小、Aruco標(biāo)記大小、Aruco字典名稱、額

    2024年04月15日
    瀏覽(28)
  • opencv(三)邊界填充、圖像融合、圖像閾值處理

    opencv(三)邊界填充、圖像融合、圖像閾值處理

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 邊界填充就是將圖片按一定的方法將圖片的四周向外填充并將圖片放大 因?yàn)閛pencv中的顏色通道不是RGB而是BGR,所以我們要用到之前講到的分割將顏色通道重新整合成RGB后再用matplotlib庫將其畫出 BORDER_R

    2024年02月21日
    瀏覽(30)
  • 【opencv】示例-ffilldemo 使用floodFill()函數(shù)進(jìn)行區(qū)域泛洪填充
  • 【opencv】 利用圖像輪廓函數(shù)填充輪廓內(nèi)部
  • OpenCV入門系列2:圖像疊加、填充和腐蝕

    OpenCV入門系列2:圖像疊加、填充和腐蝕

    在系列1中已經(jīng)初步了解圖像的組成并通過OpenCV函數(shù)對(duì)圖片的組成進(jìn)行了驗(yàn)證,接下來將學(xué)習(xí)圖像基本的操作函數(shù),包括圖像的疊加、填充和腐蝕。 已知圖像是由其像素點(diǎn)顏色通道的數(shù)據(jù)組成,而圖像之所以不同,就是因?yàn)橄袼攸c(diǎn)內(nèi)數(shù)據(jù)不同。因此,若要將兩圖像進(jìn)行疊加,

    2024年02月05日
    瀏覽(21)
  • python opencv實(shí)現(xiàn)找到圖像的輪廓,填充顏色

    python opencv實(shí)現(xiàn)找到圖像的輪廓,填充顏色

    我想找到圖片中的閉合圈,然后填充顏色 所需要的cv函數(shù): 1。 OpenCV提供的findContours()方法可以通過計(jì)算圖像梯度來判斷出圖像的邊緣,然后將邊緣的點(diǎn)封裝成數(shù)組返回。 ? ?image : 為檢測(cè)的圖像,必須是8位單通道二值圖像。如果原圖為彩色的,必須轉(zhuǎn)為灰度圖,并通過二值

    2024年02月04日
    瀏覽(24)
  • Android OpenCV(四十一):圖像分割(漫水填充法),看完豁然開朗

    Android OpenCV(四十一):圖像分割(漫水填充法),看完豁然開朗

    漫水填充算法是根據(jù)像素灰度值之間的差值尋找相同區(qū)域?qū)崿F(xiàn)分割。我們可以將圖像的灰度值理解成像素點(diǎn)的高度,這樣一張圖像可以看成崎嶇不平的地面或者山區(qū),向地面上某一個(gè)低洼的地方傾倒一定量的水,水將會(huì)掩蓋低于某個(gè)高度的區(qū)域。漫水填充法利用的就是這樣的

    2024年04月10日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包