OPENCV-4 學習筆記

OPENCV-4 學習筆記

ROI—設定感興趣的區域(region of interest)

定義:

Mat imageROI;  
//方法一:通過Rect指定矩形區域 
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類型并給其設定ROI區域  Mat imageROI= srcImage1(Rect(200,250,logoImage.cols,logoImage.rows));  //【3】加載掩模(必須是灰度圖)  Mat mask= imread("2.jpg",0);  //【4】將掩膜拷貝到ROI  logoImage.copyTo(imageROI,mask);  //【5】顯示結果  namedWindow("<1>利用ROI實現圖像疊加示例窗口");  imshow("<1>利用ROI實現圖像疊加示例窗口",srcImage1);  return true;  
}  

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

公式:

實現函數:addWeighted函數

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】做圖像混合加權操作  betaValue= ( 1.0 - alphaValue );  addWeighted(srcImage2, alphaValue, srcImage3, betaValue, 0.0, dstImage);  //【3】創建并顯示原圖窗口  namedWindow("<2>線性混合示例窗口【原圖】 by淺墨", 1);  imshow("<2>線性混合示例窗口【原圖】 by淺墨", srcImage2 );  namedWindow("<3>線性混合示例窗口【效果圖】 by淺墨", 1);  imshow("<3>線性混合示例窗口【效果圖】 by淺墨", dstImage );  return true;  
    

    }

分離顏色通道

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

創建軌跡條——createTrackbar函數

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

獲取當前軌跡條的位置——getTrackbarPos函數

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250746.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250746.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250746.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue --- mintUI中Swipe(輪播圖)的使用

引入 // main.js // 導入包 import { Swipe, SwipeItem } from mint-ui// 注冊 Vue.component(Swipe.name, Swipe); Vue.component(SwipeItem.name, SwipeItem);放在需要顯示的位置 // HomeContainer.vue(首頁 -> 組件) <template><div><!-- 輪播圖區域 --…

前端換行顯示,后端返回br

轉載于:https://www.cnblogs.com/lml-lml/p/9597547.html

MySql隨筆part3 表操作

一:什么是表 表(table): 表似一種結構化的文件,可用來存儲某種特定類型的數據.表中的一條記錄有對應的標題,標題稱之為表的字段 二:創建表 1 create table table_name( 2 字段名1 類型[(寬度) 約束條件], 3 字段名2 類型[(寬度) 約束條件], 4 字段名3 類型[(寬度) 約束條件] 5 …

OPENCV-5 學習筆記

OPENCV-5 學習筆記 線性濾波 方框濾波——boxblur函數均值濾波&#xff08;鄰域平均濾波&#xff09;——blur函數高斯濾波——GaussianBlur函數中值濾波——medianBlur函數雙邊濾波——bilateralFilter函數 關于濾波和模糊—–濾波可分低通濾波和高通濾波兩種。而高斯濾波是…

node --- 監聽文件變化(靜態、動態、子進程)

靜態版本:監聽的文件名寫死了 // watcher.js use strict const fs require(fs); fs.watch(target.txt, () > console.log(File changed!)); console.log(Now watching target.txt for changes...);命令行啟動 node watcher.js動態版本:在命令行輸入需要監聽的文件名. pr…

redis學習總結

一、redis工作流程 1、把redis安裝到Linux上 2、配置redis.conf文件 使之可以后臺運行 3、根據項目需求添加相應的jar包 4、調用相應的api實現項目需求 二、redis相關知識 1、redis是緩存數據庫&#xff0c;為了減少對關系型數據庫的訪問消耗&#xff0c;可以把常用的數據添加…

OPENCV-6 學習筆記

OPENCV-6 學習筆記 邊緣檢測 步驟&#xff1a; 濾波增強檢測 canny算子—Canny 的目標是找到一個最優的邊緣檢測算法 評價標準&#xff1a; 1.低錯誤率: 標識出盡可能多的實際邊緣&#xff0c;同時盡可能的減少噪聲產生的誤報。 2.高定位性: 標識出的邊緣要與圖像中的實…

es6 --- Promise封裝讀取文件操作

Promise: es6中為了解決回調地獄問題而產生的 Promise的參數 Promise的參數是一個函數.每個Promise在實例化時,都會立即執行參數里的函數 const p new Promise(()>{console.log(1); })// 解釋了上面的第2條Promise參數的參數 Promise的參數(函數),默認有2個參數(resol…

匿名函數

匿名函數&#xff1a;lambda 函數 語法&#xff1a; lambda 參數1, 參數2 : 表達式 表達式即為返回值 例&#xff1a; result &#xff08;lambda x, y: xy)(1.2) print(result) 例2&#xff1a; newFunc lambda x,y : xy print(newFunc(1,2) 例3&#xff1a; result sorted…

hdu-6165(tarjan+topusort)

題意&#xff1a;一個有向圖&#xff0c;無自環&#xff0c;無重邊&#xff0c;讓你判斷這個圖內的任意兩點是否有路&#xff1b; 解題思路&#xff1a;首先&#xff0c;判斷兩個點是否可達一般用出入度來判斷&#xff0c;如果在拓撲排序中同時有兩個及以上入度同時為零的點&am…

OPENCV-7 學習筆記

OPENCV-7 學習筆記 轉換圖像尺寸 resize函數。這是最直接的方式&#xff0c;yrUp( )、pyrDown( )函數。即圖像金字塔相關的兩個函數&#xff0c;對圖像進行向上采樣&#xff0c;向下采樣的操作。 圖像金字塔 類似于金字塔的形狀&#xff0c;將原始圖像以金字塔形狀的分辨率…

雜項:E-Learning

ylbtech-雜項&#xff1a;E-Learning1.返回頂部 1、E-Learning&#xff1a;英文全稱為&#xff08;Electronic Learning&#xff09;&#xff0c;中文譯作“數字&#xff08;化&#xff09;學習”、“電子&#xff08;化&#xff09;學習”、“網絡&#xff08;化&#xff09;學…

css --- flex布局的應用(between)

between 想把發布時間放在左邊,點擊放在右邊 頁面結構如下: 可以看到發布時間和點擊是在類 .mui-ellipsis 下.使用css3的 flex 布局中的: space-between .mui-ellipsis{display: flex;justify-content: space-between; }

WeUI

介紹&#xff1a; WeUI是微信設計團隊為微信網站開發量身定做的微信類UI界面&#xff0c;旨在改善和規范微信用戶體驗。包括組分如button&#xff0c;cell&#xff0c;dialog&#xff0c;progress&#xff0c;toast&#xff0c;article&#xff0c;actionsheet&#xff0c;icon…

php中的json

php中的json函數主要有三個&#xff1a; 函數描述json_encode()對變量進行 JSON 編碼json_decode對 JSON 格式的字符串進行解碼&#xff0c;轉換為 PHP 變量json_last_error返回最后發生的錯誤 認識前提&#xff1a; {}&#xff0c;花括號代表包裝的是一個對象數據&#xff0…

vue --- 全局配置過濾函數,使用moment函數來格式化時間

效果1 YYYY-MM-DD 效果2 YYYY-MM-DD HH:mm:ss 配置注意事項 由于時間格式化,在大多數頁面中都會用到,因此建議配置在全局中 使用moment函數 -> http://momentjs.cn/ npm 安裝 # 命令行 cnpm i moment -S在全局中配置 // main.js import moment from momentVue.f…

2018ICPC南京賽區網絡賽J Sum(素數篩+找規律)

素數篩鏈接&#xff1a;https://blog.csdn.net/dl962454/article/details/76595623 【題意】 f(i)&#xff1a;能拆成兩個數的乘積&#xff0c;并且這兩個數要求沒有平方因子&#xff0c;并且兩個數的位置互換算兩種方案。 最后求f(1)f(2)f(3)...f(n&#xff09;。 【解題思路】…

[UE4]C++中extern關鍵字淺談

變量聲明和變量是有區別的 extern int i; //只是聲明i而非定義i int j; //聲明而且還定義了j 任何一個顯式初始化的聲明都將成為定義&#xff0c;而不管有沒有extern&#xff0c;extern語句一旦變量賦予了初始值就變成了定義。 extern double pi3.1415926; //定義 stat…

PHP 計算兩個兩個文件的相對路徑

例&#xff1a; a‘/a/b/c/d/e.php′;a = ‘/a/b/c/d/e.php’; b ‘/a/b/12/34/c.php’; 二者的相對路徑結果為&#xff1a;/a/b/12/34/../../c/d/e.php //計算出$b相對于$a的相對路徑: function getRelativePath($a,$b){$returnPath array(dirname($b));$arrA explode(…

vue --- 使用vue-router獲取帶參數的路由

希望的效果如下: 2個路由: 點擊如下 步驟. 使用 router-link 來指定路由路徑在router.js中指定 路徑的 事件處理函數(對應的組件)創建對應的組件 router-link 找到一個區別各個列表的屬性(id),將其作為參數傳遞到路由中to是vue-router中用來綁定路由的屬性由于需要進行計…