我的OpenCV學習筆記(17):利用形態學學濾波檢測邊沿和角點

首先如何理解對灰階映像進行形態學操作?一種比較形象的方法是將灰階映像看做是“等高線”:亮的地區代表山峰,而暗的地區代表山穀,映像的邊沿就對應於峭壁。如果腐蝕一幅映像,會導致山穀被擴充,而峭壁減少了。相反的,如果膨脹一幅映像,峭壁則會增加。但是這兩種情況下,中間的部分(大片的穀底和高原)基本保持不變。在上述理解的基礎上,如果我們對映像的腐蝕和膨脹的結果做差,就能提取映像的邊界:因為邊界地區,二者完全不同。(實際上,我們也可以用腐蝕或者膨脹的結果與源映像做差得出類似結果,但提取的邊界會比較細)。可以

直接選擇排序

直接選擇排序的作法是:第一趟掃描所有資料,選擇其中最小的一個與第一個資料互換;第二趟從第二個資料開始向後掃描,選擇最小的與第二個資料互換;依次進行下去,進行了(n-1)趟掃描以後就完成了整個排序過程。 演算法:void selectsort(int a[],int n){  int i,j,p,temp;  for(i=1;i<=n-1;i++)   //從第1個記錄開始到倒數第2個結束  {    p=i;   //準備    for(j=i+1;j<=n;j++) 

我的OpenCV學習筆記(18):使用Sobel變化和拉普拉斯變換檢測映像邊沿

Sobel變換和拉普拉斯變換都是高通濾波器。什麼是高通濾波器呢?就是保留映像的高頻分量(變化劇烈的部分),抑製圖像的低頻分量(變化緩慢的部分)。而映像變化劇烈的部分,往往反應的就是映像的邊沿資訊了。在OpenCV中,調用sobel函數很簡單:Mat image = imread("D:/picture/images/boldt.jpg",0);if(!image.data)return -1;imshow("源映像",image);Mat

動態尋找—二叉排序樹

動態尋找的大多藉助於樹類型的結構,這裡只介紹最簡單的一種——二叉排序樹。二叉排序樹是這樣一種樹:它的要麼是空的;如果它的左子樹不為空白,那麼左子樹上所有節點的值均小於根節點的值;如果右子樹不為空白,那麼右子樹上的值均大於根節點上的值,並且它的左右子樹還是二叉排序樹。二叉排序樹有一個重要的性質:當你中序遍曆該樹時,得到的遍曆結果是有序的。但這一切跟動態尋找尋找有什麼關係呢?使用線性資料結構,也能較好地完成尋找工作,比如之前提過的折半尋找法。但是如果我想完成的是:如果找不到這個元素,就把它插入或者如

win7下安裝vc++6.0以及解決vc++6.0與office的相容性問題的方法

一下內容整理自網路:首先是在win7下如何安裝vc++6.0,要注意3點:1.在安裝或者使用Visual C++ 6.0時,凡是出現相容性問題提示對話方塊,一律按以下方式處理——把“不再顯示此訊息”打上勾,然後選擇“運行程式”。2.在安裝VC的時候,選擇“custom(自訂安裝)”: 接下來就要,注意了——不要選擇TOOLS裡面的OLE/COM OBJECT

Josephus問題

Josephus問題:一群小孩圍成一圈,任意假定一個數m,從第s個小孩起,順時針方向數,每數到第m個小孩時,該小孩就離開,小孩不斷離開,圈子不斷縮小。最後,剩下的一個小孩便是勝利者。究竟勝利者是第幾個小孩呢?#include "stdafx.h"#include <iostream>using namespace std;//初始前n個資料void InitData(int *p,int n){ for (int

我的OpenCV學習筆記(10):空域濾波之銳利化濾波器

銳利化的作用是加強映像的邊沿和輪廓,通常也成為高通濾波器:模板一般設計為中心處的值為正,外圍的值為負(總係數之和為0):int main(){//源映像Mat scr = imread("D:/picture/img.tif");Mat rst;imshow("原映像",scr);Mat kernel(3,3,CV_32F,Scalar(-1)); // 分配像素置kernel.at<float>(1,1) =

資料結構-引言

說來慚愧,我是學通訊專業的,沒學過資料結構。雖然電腦二級考試的時候看過一點資料結構,但是考完試就忘了。在編程的過程中,逐步體會到了資料結構是多麼重要,趁現在還比較年輕,打算仔細的學學。首先,資料結構是幹什麼的?為什麼它總是跟演算法扯上關係?概括的說,要用電腦求解實際問題需要做兩件事:第一,把實際問題用計算語言描述;第二,用電腦語言求解這個問題。第一件事情是資料結構乾的,第二件事情就是演算法乾的。有一個著名的公式:程式 = 資料結構 + 演算法

我的OpenCV學習筆記(13):計算長條圖,利用尋找表展開長條圖,長條圖均衡

一些標頭檔:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <iostream>using namespace std;using namespace cv; 首先建立一個類:class Histogram1D{private://長條圖的點數int

一種自訂網路通訊協定

#define MAX_MSG_SIZE 2048typedef enum _MSG_TYPE{ EN_CLIENT_REQ_PING = MSG_BASE_CLIENT_REQ, EN_CLIENT_REQ_LOGIN, /**///////////////////////////////////////////////////////////////////////////

重提迴圈隊列

之前寫過一篇部落格介紹隊列:http://blog.csdn.net/thefutureisour/article/details/7835273後來發現這個這個隊列是有問題的:bool enQueue(Queue *q,ElemType e){//如果隊列已滿,重新分配記憶體if(q->rear == q->Qsize-1){q->data =

我的OpenCV學習筆記(16):利用工具條調用基本的形態學操作

這次主要介紹兩方面的內容,一部分是形態學操作,另一部分是工具條。先說形態學操作。這裡只介紹4種簡單的:腐蝕、膨脹、開、閉。最基本的形態學操作是腐蝕和膨脹。其他的操作可以通過腐蝕和膨脹推匯出來。用集合論的觀點介紹他們非常麻煩。這裡換一種思路:我們先做一定的假設:對於一幅映像:前景(我們感興趣的部分)是白色的;背景(不感興趣的部分)是黑色的。然後就可以望文生義一下了:腐蝕操作會使得前景變小,而膨脹會使得前景變大。這主要是當結構元(用來對影像處理的基本模版)作用於映像的邊沿時,兩種操作的定義引起的。腐

我的OpenCV學習筆記(11):啟動網路攝影機

在網上看了許多關於OpenCV啟動網路攝影機的資料,但是,都是基於C語言的,代碼又臭又長,(其實主要是因為我學的OpenCV就是用C++的,C語言的基本資料結構不太熟悉),所以一直想找一個用C++寫的程式,最後讓我在OpenCV內建的英文參考手冊上找見了,整個代碼30行都不到!nice啊!我對代碼做了一點修改,發上來吧!#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#

我的OpenCV學習筆記(15):利用反向投影長條圖尋找特定的內容

什麼是反向投影長條圖呢?簡單的說在灰階映像的每個點(x,y),用它對應的長條圖的bin的值(就是有多少像素落在bin內)來代替它。所以·如果這個bin的值比較大,那麼反向投影顯示的結果會比較亮,否則就比較暗。從統計學的角度,反輸出映像象素點的值是觀測數組在某個分布(長條圖)下的的機率。所以加入我們已經得到了一個物體的長條圖,我們可以計算它在另一幅映像中的反向投影,來判斷這幅映像中是否有該物體。OpenCV提供了計算反向投影長條圖的函數:calcBackProject來計算一幅映像對於給定長條圖的

我的OpenCV學習筆記(七):繪圖操作

OpenCV提供了一些基本的繪圖操作,比如畫圓,畫橢圓,畫線,畫矩形,在映像裡插入文字等功能。畫圓使用的是circle函數,必須提供的參數是:畫在出的圓顯示在哪裡,圓心,半徑,以及畫線的顏色。//圓心Point center = Point(255,255);//半徑int r = 100;//承載映像Mat

作業系統經典書籍

介紹了一些作業系統學習的經典書籍,包括理論上的、具體作業系統的。Abraham Silberschatz的兩本書:1. 實用作業系統概念(影印版)2. 作業系統概念(第六版 影印版)這個作者絕對是頂尖級的,來自貝爾實驗室,是目前世界上作業系統方面的領軍人物。這兩本書第二本和第一本很多地方相似,區別在於第二本理論偏重一些,第一本執行個體討論的更多一些。這兩本書別看很厚,但是寫的非常流暢,屬於比較易讀的一類。3. 現代作業系統(英文版&#8226;第2版)Andrew S.

泛型演算法庫簡介

什麼是泛型演算法?通俗的說,就是這個寫演算法是不依賴資料類型的。比如尋找某個元素,可以是對vector尋找,也可以對list尋找,甚至是對數組尋找;這些演算法的輸入通常是一對迭代器來表明演算法作用的範圍。下面的例子顯示了使用find函數和count函數。//輸入12個數vector<int> ival;for(int i = 0;i <

在學生時代,要有選擇性的讀書

當我在本科的時候,做畢設的時接觸了一些論壇。基本上有一個共識,國內一般高校上的課,基本上是沒辦法滿足工作需要的。如果想深入一個領域,得找一些經典書籍自學。但是由於書的側重點,潛在對象,年代不同,所以對經典圖書也得有區別的對待。首先,對於理論研究的書籍,先要搞清楚你想獲得什麼,你有多長時間。很多理論都是非常深奧的,理解、消化、運用起來會花很長時間。(有時一本兩三百頁的書你卻半年都看不懂)。比如《數字通訊》( John

我的OpenCV學習筆記(九):空域濾波之中值濾波

中值濾波就是將當前像素值替換為模板覆蓋範圍內的所有像素值中大小置中那一個:對於一個3*3的模板,第5大的就是中值:(10,15,20,20,20,20,20,25,100)中值濾波使得那些更亮(或者更暗)的點更像他周圍的值。所以它在濾除噪音的同時,可以較好地保留細節輪廓。為了驗證上述結論,我先給一幅映像加入椒鹽雜訊,然後用分別用中值濾波、均值濾波處理映像,進行對比:#include <opencv2/core/core.hpp>#include

我的OpenCV學習筆記(22):如何區別一幅映像是否是黑白映像

其實按理說這並不是一件困難的工作,但是由於種種原因,在OpenCV中讀取的黑白映像並不是我們想像的只有一個通道,而是3通道的。但是當我們使用Mat image = imread("D:/picture/images/baboon2.jpg",0);之後,不論是彩色映像還是黑白映像都會轉換為單通道。明白了這個之後,我們的程式就簡單了:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#

總頁數: 61357 1 .... 12988 12989 12990 12991 12992 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.