Time of Update: 2018-12-05
首先如何理解對灰階映像進行形態學操作?一種比較形象的方法是將灰階映像看做是“等高線”:亮的地區代表山峰,而暗的地區代表山穀,映像的邊沿就對應於峭壁。如果腐蝕一幅映像,會導致山穀被擴充,而峭壁減少了。相反的,如果膨脹一幅映像,峭壁則會增加。但是這兩種情況下,中間的部分(大片的穀底和高原)基本保持不變。在上述理解的基礎上,如果我們對映像的腐蝕和膨脹的結果做差,就能提取映像的邊界:因為邊界地區,二者完全不同。(實際上,我們也可以用腐蝕或者膨脹的結果與源映像做差得出類似結果,但提取的邊界會比較細)。可以
Time of Update: 2018-12-05
直接選擇排序的作法是:第一趟掃描所有資料,選擇其中最小的一個與第一個資料互換;第二趟從第二個資料開始向後掃描,選擇最小的與第二個資料互換;依次進行下去,進行了(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++)
Time of Update: 2018-12-05
Sobel變換和拉普拉斯變換都是高通濾波器。什麼是高通濾波器呢?就是保留映像的高頻分量(變化劇烈的部分),抑製圖像的低頻分量(變化緩慢的部分)。而映像變化劇烈的部分,往往反應的就是映像的邊沿資訊了。在OpenCV中,調用sobel函數很簡單:Mat image = imread("D:/picture/images/boldt.jpg",0);if(!image.data)return -1;imshow("源映像",image);Mat
Time of Update: 2018-12-05
動態尋找的大多藉助於樹類型的結構,這裡只介紹最簡單的一種——二叉排序樹。二叉排序樹是這樣一種樹:它的要麼是空的;如果它的左子樹不為空白,那麼左子樹上所有節點的值均小於根節點的值;如果右子樹不為空白,那麼右子樹上的值均大於根節點上的值,並且它的左右子樹還是二叉排序樹。二叉排序樹有一個重要的性質:當你中序遍曆該樹時,得到的遍曆結果是有序的。但這一切跟動態尋找尋找有什麼關係呢?使用線性資料結構,也能較好地完成尋找工作,比如之前提過的折半尋找法。但是如果我想完成的是:如果找不到這個元素,就把它插入或者如
Time of Update: 2018-12-05
一下內容整理自網路:首先是在win7下如何安裝vc++6.0,要注意3點:1.在安裝或者使用Visual C++ 6.0時,凡是出現相容性問題提示對話方塊,一律按以下方式處理——把“不再顯示此訊息”打上勾,然後選擇“運行程式”。2.在安裝VC的時候,選擇“custom(自訂安裝)”: 接下來就要,注意了——不要選擇TOOLS裡面的OLE/COM OBJECT
Time of Update: 2018-12-05
Josephus問題:一群小孩圍成一圈,任意假定一個數m,從第s個小孩起,順時針方向數,每數到第m個小孩時,該小孩就離開,小孩不斷離開,圈子不斷縮小。最後,剩下的一個小孩便是勝利者。究竟勝利者是第幾個小孩呢?#include "stdafx.h"#include <iostream>using namespace std;//初始前n個資料void InitData(int *p,int n){ for (int
Time of Update: 2018-12-05
銳利化的作用是加強映像的邊沿和輪廓,通常也成為高通濾波器:模板一般設計為中心處的值為正,外圍的值為負(總係數之和為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) =
Time of Update: 2018-12-05
說來慚愧,我是學通訊專業的,沒學過資料結構。雖然電腦二級考試的時候看過一點資料結構,但是考完試就忘了。在編程的過程中,逐步體會到了資料結構是多麼重要,趁現在還比較年輕,打算仔細的學學。首先,資料結構是幹什麼的?為什麼它總是跟演算法扯上關係?概括的說,要用電腦求解實際問題需要做兩件事:第一,把實際問題用計算語言描述;第二,用電腦語言求解這個問題。第一件事情是資料結構乾的,第二件事情就是演算法乾的。有一個著名的公式:程式 = 資料結構 + 演算法
Time of Update: 2018-12-05
一些標頭檔:#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
Time of Update: 2018-12-05
#define MAX_MSG_SIZE 2048typedef enum _MSG_TYPE{ EN_CLIENT_REQ_PING = MSG_BASE_CLIENT_REQ, EN_CLIENT_REQ_LOGIN, /**///////////////////////////////////////////////////////////////////////////
Time of Update: 2018-12-05
之前寫過一篇部落格介紹隊列:http://blog.csdn.net/thefutureisour/article/details/7835273後來發現這個這個隊列是有問題的:bool enQueue(Queue *q,ElemType e){//如果隊列已滿,重新分配記憶體if(q->rear == q->Qsize-1){q->data =
Time of Update: 2018-12-05
這次主要介紹兩方面的內容,一部分是形態學操作,另一部分是工具條。先說形態學操作。這裡只介紹4種簡單的:腐蝕、膨脹、開、閉。最基本的形態學操作是腐蝕和膨脹。其他的操作可以通過腐蝕和膨脹推匯出來。用集合論的觀點介紹他們非常麻煩。這裡換一種思路:我們先做一定的假設:對於一幅映像:前景(我們感興趣的部分)是白色的;背景(不感興趣的部分)是黑色的。然後就可以望文生義一下了:腐蝕操作會使得前景變小,而膨脹會使得前景變大。這主要是當結構元(用來對影像處理的基本模版)作用於映像的邊沿時,兩種操作的定義引起的。腐
Time of Update: 2018-12-05
在網上看了許多關於OpenCV啟動網路攝影機的資料,但是,都是基於C語言的,代碼又臭又長,(其實主要是因為我學的OpenCV就是用C++的,C語言的基本資料結構不太熟悉),所以一直想找一個用C++寫的程式,最後讓我在OpenCV內建的英文參考手冊上找見了,整個代碼30行都不到!nice啊!我對代碼做了一點修改,發上來吧!#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#
Time of Update: 2018-12-05
什麼是反向投影長條圖呢?簡單的說在灰階映像的每個點(x,y),用它對應的長條圖的bin的值(就是有多少像素落在bin內)來代替它。所以·如果這個bin的值比較大,那麼反向投影顯示的結果會比較亮,否則就比較暗。從統計學的角度,反輸出映像象素點的值是觀測數組在某個分布(長條圖)下的的機率。所以加入我們已經得到了一個物體的長條圖,我們可以計算它在另一幅映像中的反向投影,來判斷這幅映像中是否有該物體。OpenCV提供了計算反向投影長條圖的函數:calcBackProject來計算一幅映像對於給定長條圖的
Time of Update: 2018-12-05
OpenCV提供了一些基本的繪圖操作,比如畫圓,畫橢圓,畫線,畫矩形,在映像裡插入文字等功能。畫圓使用的是circle函數,必須提供的參數是:畫在出的圓顯示在哪裡,圓心,半徑,以及畫線的顏色。//圓心Point center = Point(255,255);//半徑int r = 100;//承載映像Mat
Time of Update: 2018-12-05
介紹了一些作業系統學習的經典書籍,包括理論上的、具體作業系統的。Abraham Silberschatz的兩本書:1. 實用作業系統概念(影印版)2. 作業系統概念(第六版 影印版)這個作者絕對是頂尖級的,來自貝爾實驗室,是目前世界上作業系統方面的領軍人物。這兩本書第二本和第一本很多地方相似,區別在於第二本理論偏重一些,第一本執行個體討論的更多一些。這兩本書別看很厚,但是寫的非常流暢,屬於比較易讀的一類。3. 現代作業系統(英文版•第2版)Andrew S.
Time of Update: 2018-12-05
什麼是泛型演算法?通俗的說,就是這個寫演算法是不依賴資料類型的。比如尋找某個元素,可以是對vector尋找,也可以對list尋找,甚至是對數組尋找;這些演算法的輸入通常是一對迭代器來表明演算法作用的範圍。下面的例子顯示了使用find函數和count函數。//輸入12個數vector<int> ival;for(int i = 0;i <
Time of Update: 2018-12-05
當我在本科的時候,做畢設的時接觸了一些論壇。基本上有一個共識,國內一般高校上的課,基本上是沒辦法滿足工作需要的。如果想深入一個領域,得找一些經典書籍自學。但是由於書的側重點,潛在對象,年代不同,所以對經典圖書也得有區別的對待。首先,對於理論研究的書籍,先要搞清楚你想獲得什麼,你有多長時間。很多理論都是非常深奧的,理解、消化、運用起來會花很長時間。(有時一本兩三百頁的書你卻半年都看不懂)。比如《數字通訊》( John
Time of Update: 2018-12-05
中值濾波就是將當前像素值替換為模板覆蓋範圍內的所有像素值中大小置中那一個:對於一個3*3的模板,第5大的就是中值:(10,15,20,20,20,20,20,25,100)中值濾波使得那些更亮(或者更暗)的點更像他周圍的值。所以它在濾除噪音的同時,可以較好地保留細節輪廓。為了驗證上述結論,我先給一幅映像加入椒鹽雜訊,然後用分別用中值濾波、均值濾波處理映像,進行對比:#include <opencv2/core/core.hpp>#include
Time of Update: 2018-12-05
其實按理說這並不是一件困難的工作,但是由於種種原因,在OpenCV中讀取的黑白映像並不是我們想像的只有一個通道,而是3通道的。但是當我們使用Mat image = imread("D:/picture/images/baboon2.jpg",0);之後,不論是彩色映像還是黑白映像都會轉換為單通道。明白了這個之後,我們的程式就簡單了:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#