OpenCV之基礎學習:矩陣的掩膜操作
根據自己在網課上的學習,記錄一些筆記,加深記憶,在這裡分享出來,大家一起學習,自己程式設計能力有限,對於一些專業名詞的運用可能不太得當,不過希望能夠讓自己不斷進步。如有不足不嚴謹之處希望大家指出來。
這一次學習的是矩陣掩膜操作。
1.掩膜操作可以實現影象對比度的調整,使得影象可以銳化,提高影象對比度。
公式為:I(i,j)=5*I(i,j)-[I(i-1,j)+I(i+1,j)+I(i,j-1)+I(i,j+1)]
實質就是如下矩陣:
對應下面的圖:
首先了解一下如何獲取影象畫素指標 :
定義一個uchar型別的指標指向當前行,uchar*currentRow=Mat.ptr<uchar>(row)
再掌握一個函式的運用,saturate_cast<uchar>(畫素值i),如果i<=0,返回0,如果i>=255,返回255,如果i在0~255之間那麼就返回當前值,該函式是確保rgb值範圍在0~255之間。
2.自制掩膜
#include <iostream> #include<opencv2/opencv.hpp> using namespace std; using namespace cv; int main(int argc, const char * argv[]) { Mat src,dst; src=imread("/Users/Meng/Documents/cscpp/Pictures/qinxi.jpg"); namedWindow("original image",CV_WINDOW_NORMAL); imshow("original image", src); int cols=(src.cols-1)*src.channels();//獲取畫素的列,三通道 int offsetx=src.channels();//有幾個通道 int rows=src.rows;//image row dst=Mat::zeros(src.size(), src.type());//set the default color into black 是從矩陣的(1,1)開始的所以行列應該寫好 for(int row=1;row<(rows-1);row++){ const uchar*current=src.ptr<uchar>(row);//get the current row; const uchar*previous=src.ptr<uchar>(row-1);//the previous row const uchar*next=src.ptr<uchar>(row+1);//the next row; uchar*output=dst.ptr<uchar>(row); for(int col=offsetx;col<cols;col++){ output[col]=saturate_cast<uchar>(5*current[col]-(current[col-offsetx]+current[col+offsetx]+previous[col]+next[col]));//use mask kernel to recaculate xiangsu value,then enhance picture contrast } } namedWindow("image after enhance contrast",CV_WINDOW_NORMAL); imshow("image after enhance contrast", dst); waitKey(0);return 0;}
3.利用filter2D實現掩膜操作
filter2D(src,dst,src.depth(),kernel),其中src.depth()可以直接用-1代替,kernel就是矩陣的掩膜。
Mat kernel=(Mat_<char>(3,3)<<0,-1,0,-1,5,-1,0,-1,0); filter2D(src, dst, src.depth(), kernel);//src.depth()=-1 namedWindow("image after enhanced contrast2",CV_WINDOW_NORMAL); imshow("image after enhanced contrast2", dst);
4.結束語
以上就是矩陣的掩膜操作,還是比較容易理解的,以後可以結合影象模糊的運用使得影象更加精緻,大家快上手操作運用一下吧~
最近馬上畢業了,自己總愛胡思亂想,希望能有勇氣做自己想做的事,坦坦蕩蕩的樣子最好。
相關推薦
OpenCV之基礎學習:矩陣的掩膜操作
根據自己在網課上的學習,記錄一些筆記,加深記憶,在這裡分享出來,大家一起學習,自己程式設計能力有限,對於一些專業名詞的運用可能不太得當,不過希望能夠讓自己不斷進步。如有不足不嚴謹之處希望大家指出來。這一次學習的是矩陣掩膜操作。1.掩膜操作可以實現影象對比度的調整,使得影象可以
矩陣掩膜操作-API呼叫
#include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace c
OpenCV學習第三篇:圖片的掩膜操作(實現影象的對比度調整)
掩膜操作實現影象的對比度調整 矩陣的掩膜操作十分簡單,根據掩膜來重新計算每個畫素的畫素值,掩膜(mask也被稱為kernel) I(i,j) = 5* I(i,j)-[I(i-1,j)+I(i+1,
Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- 第二章:矩陣代數
學習目標: 理解矩陣和與它相關的運算; 理解矩陣的乘法如何被看成是線性組合; 理解單位矩陣、轉置矩陣、矩陣的行列式和逆矩陣; 熟悉DirectX Math庫中矩陣相關的類和函式; 1 矩陣的定義 一個m x n的矩陣M是一個有實陣列成的
OpenCV靜心修煉總結篇2——矩陣的掩膜操作
獲取影象畫素指標 CV_Assert(myImage.depth() == CV_8U); Mat.ptr<uchar>(int i=0) 獲取畫素矩陣的指標, 索引 i 表示第幾行, 從 0 開始計行數。 獲得當前行指標 const uchar* current= myImage
Opencv--矩陣掩膜
掩膜定義: 首先我們從物理的角度來看看mask到底是什麼過程。 在半導體制造中,許多晶片工藝步驟採用光刻技術,用於這些步驟的圖形“底片”稱為掩膜(也稱作“掩模”),其作用是:在矽片上選定的區域中對一個不透明的圖形模板遮蓋,繼而下面的腐蝕或擴散將隻影響選定的區域以外的區域。 用選定的影
java基礎學習:JavaWeb之Servlet
其他更多java基礎文章: java基礎學習(目錄) 什麼是Servlet Servlet是一個特殊的Java類, 是執行在 Web 伺服器中的小型 Java 程式(即:伺服器端的小應用程式)。servlet 通常通過 HTTP(超文字傳輸協議)接收和響應來自 Web 客戶端的請求。這個Java類必須
java基礎學習:JavaWeb之EL表示式
其他更多java基礎文章: java基礎學習(目錄) 一、EL表示式 EL 全名為Expression Language。JSP中可以使用EL表示式,EL表示式是用"${}"括起來的指令碼,用來更方便地讀取物件,EL表示式寫在JSP的HTML程式碼中,而不能寫在"<%%>"引起的JSP指令
java基礎學習:JavaWeb之Cookie和Session
其他更多java基礎文章: java基礎學習(目錄) 一、會話概述 1.1、什麼是會話? 會話可簡單理解為:使用者開一個瀏覽器,點選多個超連結,訪問伺服器多個web資源,然後關閉瀏覽器,整個過程稱之為一個會話其中不管瀏覽器傳送多少請求,都視為一次會話,直到瀏覽器關閉,本次會話結束。 其中注意,一個瀏
java基礎學習:JavaWeb之JSP
其他更多java基礎文章: java基礎學習(目錄) 本章內容較多,全部認真看完可能需要一小時以上,建議邊看邊做筆記,否則容易混亂 一、JSP概述 1.1、JSP結構 網路伺服器需要一個JSP引擎,也就是一個容器來處理JSP頁面。容器負責截獲對JSP頁面的請求。內嵌JSP容器的Apache支援JS
java基礎學習:JavaWeb之request和response
其他更多java基礎文章: java基礎學習(目錄) 學習request和response之前先學習一下http請求 HTTP請求 瀏覽器向伺服器請求某個web資源時,稱之為瀏覽器向伺服器傳送了一個http請求。一個完整http請求應該包含三個部分: 請求行【描述客戶端的請求方式、請求的資源
OpenCV--矩陣的掩膜操作
所謂掩膜其實就是一個矩陣,然後根據這個矩陣重新計算圖片中畫素的值。 掩膜主要有以下用途: 提取感興趣區,用預先製作的感興趣區掩模與待處理影象相乘,得到感興趣區影象,感興趣區內影象值保持不變,而區外
OpenCV-影象處理(02、矩陣的掩膜操作)
1. 獲取影象畫素指標 CV_Assert(myImage.depth() == CV_8U); Mat.ptr(int i=0) 獲取畫素矩陣的指標,索引i表示第幾行,從0開始計行數。 獲得當前行指標const uchar* current= myImage.p
Tensorflow深度學習之十九:矩陣切片與連結
1、TensorFlow矩陣切片操作:tf.slice函式 函式原型:slice(input_, begin, size, name=None) 引數: input:待切片的矩陣tensor。 begin:起始位置,表示從哪一個資料開始進行切片。這個起始
Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- 第二章:矩陣代數
bin 存在 present 文檔 spec 它的 height math.h defined 原文:Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- 第二章:矩陣代數
《神經網路的梯度推導與程式碼驗證》之數學基礎篇:矩陣微分與求導
本內容為神經網路的梯度推導與程式碼驗證系列內容的第一章,更多相關內容請見《神經網路的梯度推導與程式碼驗證》系列介紹。 目錄 1.1 數學符號 1.2 矩陣導數的定義和佈局 1.3 矩陣求導的優勢 1.4 矩陣微分與矩陣求導 1.5 矩陣微分性質歸納 1.6 標
Nginx服務器之基礎學習
下載到本地 ces image nginx安裝 work 網絡數 設備 老版本 win 一、Nginx介紹 nginx:Nginx是一種軟件服務器(輕量級),故它最主要的功能就是可以與服務器硬件結合,我們的應用程序可以放在nginx服務器上進行發布,已達到讓網民瀏覽的效
SQL 基礎學習: 和深度學習資料
原子 rom 深度學習 允許 important href system 持久 cti SQL is a standard language for storing, manipulating and retrieving data in databasee. 關系型數據庫
Hadoop基礎學習:基於Hortonworks HDP
Hadoop基礎學習:基於Hortonworks HDP 我最開始是通過Hadoop Fundamentals這個課程學習了Hadoop的基礎知識,該課程使用了Hortonworks的HDP作為Hadoop平臺。HDP是一個與Cloudera, MapR類似的一個企業級Hadoop解決方案,而H
MVC案例之查詢學習:HTTP狀態500 - java.lang.NullPointerException
這幾天都在看servlet和jsp的視訊,早上看完MVC案例的查詢,沒想到一個小小的錯誤搞了我差不多一個下午,還是得多點記錄總結,以後絕不再犯同樣的錯誤! 這個查詢主要是通過點選 test.jsp 頁面的超連結來檢視資料庫裡面的資料資訊。 1.首先有一個 test.jsp 用來顯示連結並