日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OPENCV-4 学习笔记

發(fā)布時間:2023/12/10 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OPENCV-4 学习笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OPENCV-4 學(xué)習(xí)筆記

ROI—設(shè)定感興趣的區(qū)域(region of interest)

定義:

Mat imageROI; //方法一:通過Rect指定矩形區(qū)域 imageROI=image(Rect(500,250,logo.cols,logo.rows)) //方法二 指定感興趣行或列的范圍(Range) imageROI=srcImage3(Range(250,250+logoImage.rows),Range(200,200+logoImage.cols));

利用ROI將一幅圖加到另一幅圖的指定位置

bool ROI_AddImage() { //【1】讀入圖像 Mat srcImage1= imread("1.jpg"); Mat logoImage= imread("2.jpg"); if(!srcImage1.data ) { printf("讀取srcImage1錯誤~! \n"); return false; } if(!logoImage.data ) { printf("讀取logoImage錯誤~! \n"); return false; } //【2】定義一個Mat類型并給其設(shè)定ROI區(qū)域 Mat imageROI= srcImage1(Rect(200,250,logoImage.cols,logoImage.rows)); //【3】加載掩模(必須是灰度圖) Mat mask= imread("2.jpg",0); //【4】將掩膜拷貝到ROI logoImage.copyTo(imageROI,mask); //【5】顯示結(jié)果 namedWindow("<1>利用ROI實(shí)現(xiàn)圖像疊加示例窗口"); imshow("<1>利用ROI實(shí)現(xiàn)圖像疊加示例窗口",srcImage1); return true; }

初級圖像混合——線性混合操作

公式:

實(shí)現(xiàn)函數(shù):addWeighted函數(shù)

void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);
  • dst = src1[I]*alpha+ src2[I]*beta + gamma;

    bool LinearBlending()
    {
    //【0】定義一些局部變量
    double alphaValue = 0.5;
    double betaValue;
    Mat srcImage2, srcImage3, dstImage;

    //【1】讀取圖像 ( 兩幅圖片需為同樣的類型和尺寸 ) srcImage2= imread("mogu.jpg"); srcImage3= imread("rain.jpg"); if(!srcImage2.data ) { printf("你妹,讀取srcImage2錯誤~! \n"); return false; } if(!srcImage3.data ) { printf("你妹,讀取srcImage3錯誤~! \n"); return false; } //【2】做圖像混合加權(quán)操作 betaValue= ( 1.0 - alphaValue ); addWeighted(srcImage2, alphaValue, srcImage3, betaValue, 0.0, dstImage); //【3】創(chuàng)建并顯示原圖窗口 namedWindow("<2>線性混合示例窗口【原圖】 by淺墨", 1); imshow("<2>線性混合示例窗口【原圖】 by淺墨", srcImage2 ); namedWindow("<3>線性混合示例窗口【效果圖】 by淺墨", 1); imshow("<3>線性混合示例窗口【效果圖】 by淺墨", dstImage ); return true;

    }

分離顏色通道

  • split函數(shù)—將一個多通道數(shù)組分離成幾個單通道數(shù)組
    void split(const Mat& src, Mat*mvbegin);
    void split(InputArray m,OutputArrayOfArrays mv);
    //第一個參數(shù),InputArray類型的m或者const Mat&類型的src,填我們需要進(jìn)行分離的多通道數(shù)組。
    //第二個參數(shù),OutputArrayOfArrays類型的mv,填函數(shù)的輸出數(shù)組或者輸出的vector容器。
  • merge函數(shù)—將多個數(shù)組組合合并成一個多通道的數(shù)組。
    它通過組合一些給定的單通道數(shù)組,將這些孤立的單通道數(shù)組合并成一個多通道的數(shù)組,從而創(chuàng)建出一個由多個單通道陣列組成的多通道陣列
    void merge(const Mat* mv, size_tcount, OutputArray dst)
    void (InputArrayOfArrays mv,OutputArray dst)

創(chuàng)建軌跡條——createTrackbar函數(shù)

int createTrackbar(conststring& trackbarname, conststring& winname,int* value, int count, TrackbarCallback onChange=0,void* userdata=0); //創(chuàng)建軌跡條 createTrackbar("對比度:", "【效果圖窗口】",&g_nContrastValue, 300,ContrastAndBright );// g_nContrastValue為全局的整型變量,ContrastAndBright為回調(diào)函數(shù)的函數(shù)名(即指向函數(shù)地址的指針)

獲取當(dāng)前軌跡條的位置——getTrackbarPos函數(shù)

int getTrackbarPos(conststring& trackbarname, conststring& winname);

總結(jié)

以上是生活随笔為你收集整理的OPENCV-4 学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。