OPENCV-3 學習筆記

OPENCV-3 學習筆記

imread()讀入圖,第一個參數,const string&類型的filename,填我們需要載入的圖片路徑名,?第二個參數,int類型的flags,為載入標識,它指定一個加載圖像的顏色類型。

namedWindow()用于創建一個窗口,const string&型的name,即填被用作窗口的標識符的窗口名稱,int 類型的flags?,窗口的標識。

imshow()顯示一幅圖像,第一個參數,const string&類型的winname,填需要顯示的窗口標識名稱,第二個參數,InputArray?類型的mat,填需要顯示的圖像。

imwrite()輸出圖像到文件,第一個參數,const string&類型的filename,填需要寫入的文件名就行了,帶上后綴,比如,“hehe.jpg”。第二個參數,InputArray類型的img,一般填一個Mat類型的圖像數據就行了。第三個參數,const vector&類型的params,表示為特定格式保存的參數編碼,它有默認值vector(),所以一般情況下不需要填寫。

基本數據結構

1、Mat類—基礎圖像容器

由兩個數據部分組成:矩陣頭(包含矩陣尺寸、存儲方法、存儲地址等信息)和一個指向存儲所有像素值的矩陣的指針。

Mat A,C; //創建信息頭部分
A = imread("1.jpg",CV_LOAD_IMAGE_COLOR); //為矩陣開辟內存
Mat B(A); //使用拷貝構造函數
C=A;
//ROI
Mat D = (A,Rect(10,10,100,100)); //使用矩形界定
Mat D = A(Range:all(),Range(1,3)); //使用行和列界定

結構:

  • M.data? 數據區域的指針
  • M.dims? 矩陣維度
  • M.sizes? 維度
  • M.elemSize()? 每個元素占的字節空間大小,與元素類型相關,如CV_8U
  • M.step[]? 用來計算元素地址, M.step[i] 表示所有比i大的維度所占空間大小

2、Vec—模板類,主要用于存儲數值向量

//示例
//可用來定義任意類型的向量,uchar、short、int、float、double
Vec<double, 5> Vector; // 定義一個存放5個double型變量的向量 //使用[]訪問Vec向量成員
Vector[0]=10010;//支持運算類型
v1 = v2 + v3  
v1 = v2 - v3  
v1 = v2 * scale  
v1 = scale * v2  
v1 = -v2  
v1 += v2  
v1 == v2, v1 != v2  
norm(v1) (euclidean norm)  

3、Scalar類—從Vec類引出的模板類,是一個可存放4個元素的向量,主要用于傳遞和讀取圖像中的像素值

//定義BGR三個通道的顏色(藍色、綠色、紅色)
cv::Scalar myScalar;  
myScalar = cv::Scalar(255,255,255); //讀取彩色圖像像素值(三通道)
cv::Mat pImg = cv::imread("1.jpg", 1); //1表示以彩色圖像讀入
if (!pImg.data)return 0;
int x = 100, y = 100; //定義點
cv::Scalar pixel = pImg.at<Vec3b>(x, y);//選取位置
cout << "B chanel of pixel is = " << pixel.val[0] << endl;
cout << "G chanel of pixel is = " << pixel.val[1] << endl;
cout << "R chanel of pixel is = " << pixel.val[2] << endl;

4、Point類—用于表示2維坐標(x,y)

//定義圖像中的點
cv::Point pt =  Point(10, 10);
//二維空間中的點
cv::Point2d、cv::Point2d32f(指定為浮點型)
//三維空間中的點
cv::Point3d
//運算類型
pt1 = pt2 + pt3;  
pt1 = pt2 - pt3;  
pt1 = pt2 * a;  
pt1 = a * pt2;  
pt1 += pt2;  
pt1 -= pt2;  
pt1 *= a;  
double value = norm(pt); // L2 norm  
pt1 == pt2;  
pt1 != pt2;

5、Size類—可表示一幅圖像或一個矩形的大小。它包含寬、高2個成員:width , height還有一個面積函數area()

//定義
cv::Size size(int w, int h); 

6、Rect類—用于定義2維矩形的模板類,可以用來定義圖像的ROI區域。

//定義
cv::Rect rect(x, y, width, height);
//選取ROI區域
cv::Mat pImg = imread("1.jpg",1);  
cv::Rect  rect(80,20,100,100);//(x,y)=(80,20),w=100,height=100  
cv::Mat  roi = cv::Mat(pImg, rect);  
cv::Mat  pImgRect = pImg.clone();  
cv::rectangle(pImgRect,rect,cv::Scalar(0,255,0),2);  
cv::imshow("original image with rectangle",pImgRect);  
cv::imshow("roi",roi);  
cv::waitKey();  

7、RotatedRect類—特殊的矩形。這個類通過中心點,寬度和高度和旋轉角度來表示一個旋轉的矩形。

/*定義
center:中心點坐標Point2f類型
size:矩形的寬度和高度,Size2f類型
angle:順時針方向的旋轉角度(單位°),float類型
*/
RotatedRect(const Point2f& center, const Size2f& size, float angle);  //RotatedRect  cv::Point2f center(100, 100);cv::Size2f size(100, 50);float angle = 45;// try 10, 30, 45  RotatedRect rRect(center, size, angle);cv::Mat image(200, 200, CV_8UC3, cv::Scalar(0));Point2f vertices[4];rRect.points(vertices);for (int i = 0; i < 4; i++)line(image, vertices[i], vertices[(i + 1) % 4], Scalar(0, 255, 0));Rect brect = rRect.boundingRect();rectangle(image, brect, Scalar(255, 0, 0));imshow("rectangles", image);waitKey(0);

8、Rang類—表示范圍

Mat m(300,300,CV32F);
Mat part = m(Range::all(), Range(20, 200));

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

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

相關文章

vue --- vue-router(項目模式的導入)

main.js // main.js // 1.1 導入路由的包 import VueRouter from vue-router// 1.2 安裝路由 Vue.use(VuerRouter)// 1.3 導入自己的router.js模塊 import router from ./router.js// 1.4 掛載router對象在vm實例上 const vm new Vue({el: #app,router })app.vue 原本的 a …

Innodb存儲引擎——非聚集索引

如果給表定義了主鍵&#xff0c;那么表在磁盤上的存儲結構就由整齊排列的結構轉變成了樹狀結構&#xff0c;也就是「平衡樹」結構&#xff0c;換句話說&#xff0c;就是整個表就變成了一個索引&#xff0c;這就是所謂的「聚集索引」。 這就是為什么一個表只能有一個主鍵&#x…

cd 切換目錄

1. 功能說明 cd是“change directory”中每個氮氣的首字母縮寫功能是重當前工作目錄切換到指定的工作目錄&#xff1b;cd是內建命令。 2. 語法格式 cd [option] [dir] cd 選項 目錄 3.使用范例 范例1&#xff1a; 切換到/home目錄 [rootlocalhost sysconfig]# pwd /etc/s…

OPENCV-4 學習筆記

OPENCV-4 學習筆記 ROI—設定感興趣的區域&#xff08;region of interest&#xff09; 定義&#xff1a; Mat imageROI; //方法一&#xff1a;通過Rect指定矩形區域 imageROIimage(Rect(500,250,logo.cols,logo.rows)) //方法二 指定感興趣行或列的范圍&#xff08;Ran…

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…