openCV學習7-自定義線性濾波+處理邊緣
1.自定義線性濾波
·拉普拉斯運算元和掩膜的運算元很像,一箇中間是4,一箇中間是5.但是結果會差很多。
#include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> #include <opencv2\objdetect\objdetect.hpp> #include <opencv2\imgproc\types_c.h> #include <opencv2\objdetect\objdetect_c.h> #include<opencv2/opencv.hpp> #include<iostream> #include<cmath> #include<cstdio> using namespace std; using namespace cv; int main() { Mat src,dst,dstx,dsty; src=imread("cat.jpg"); if(src.empty()) { cout<<"!!???"<<endl; return -1; } namedWindow("cat!",1); imshow("cat!",src); /*1.Robert //Robert運算元(梯度運算元),X方向 namedWindow("R x",1); namedWindow("R y",1); Mat kernelx=(Mat_<int>(2,2)<<1,0,0,-1); filter2D(src,dstx,-1,kernelx,Point(-1,-1),0.0); imshow("R x",dstx); //Robert運算元,Y方向 Mat kernely=(Mat_<int>(2,2)<<0,1,-1,0); filter2D(src,dsty,-1,kernely,Point(-1,-1),0.0); imshow("R y",dsty); */ /*2.Sobel //Sobel運算元x和y方向 namedWindow("S x",1); namedWindow("S y",1); Mat sx,sy; Mat kernelx=(Mat_<int>(3,3)<<-1,0,1,-2,0,2,-1,0,1); filter2D(src,sx,-1,kernelx,Point(-1,-1),0.0); imshow("S x",sx); Mat kernely=(Mat_<int>(3,3)<<-1,-2,-1,0,0,0,1,2,1); filter2D(src,sy,-1,kernely,Point(-1,-1),0.0); imshow("S y",sy); */ /* //3.拉普拉斯運算元 namedWindow("Lap",1); Mat lap; Mat kernel=(Mat_<int>(3,3)<<0,-1,0,-1,4,-1,0,-1,0); filter2D(src,lap,-1,kernel,Point(-1,-1),0.0); imshow("Lap",lap); */ //自定義一個隨著時間變化迴圈模糊~ int c=0; int index=0; int ksize=3; while(true) { c=waitKey(500); if((char)c==27)//ESC鍵 break; ksize=4+(index%5)*2+1; Mat kernel=Mat::ones(Size(ksize,ksize),CV_32F)/(float)(ksize*ksize); filter2D(src,dst,-1,kernel,Point(-1,-1),0.0); index++; imshow("out",dst); } waitKey(0); return 0; }
2.處理邊緣
#include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> #include <opencv2\objdetect\objdetect.hpp> #include <opencv2\imgproc\types_c.h> #include <opencv2\objdetect\objdetect_c.h> #include<opencv2/opencv.hpp> #include<iostream> #include<cmath> #include<cstdio> using namespace std; using namespace cv; int main() { Mat src,dst; src=imread("cat.jpg"); if(src.empty()) { cout<<"!!???"<<endl; return -1; } namedWindow("cat!",1); imshow("cat!",src); namedWindow("out",1); int top=(int)(0.05*src.rows); int bottom=(int)(0.05*src.rows); int left=(int)(0.05*src.cols); int right=(int)(0.05*src.cols); RNG rng(12345); int bordertype=BORDER_DEFAULT; int c=0; while(true) { c=waitKey(500); if((char)c==27) break; if((char)c=='r') { bordertype=BORDER_REPLICATE; } else if((char)c=='w') { bordertype=BORDER_WRAP; } else if((char)c=='c') { bordertype=BORDER_CONSTANT; } else { bordertype=BORDER_DEFAULT; } Scalar color=Scalar(rng.uniform(0,255),rng.uniform(0,255),rng.uniform(0,255)); copyMakeBorder(src,dst,top,bottom,left,right,bordertype,color); imshow("out",dst); } waitKey(0); return 0; }
相關推薦
openCV學習7-自定義線性濾波+處理邊緣
1.自定義線性濾波·拉普拉斯運算元和掩膜的運算元很像,一箇中間是4,一箇中間是5.但是結果會差很多。#include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp>
OpenCV學習14--自定義線性濾波
卷積 模糊影象,影象邊緣,增強影象 常見卷積運算元: Robert、sobel、拉普拉斯運算元 程式碼: #include <opencv2/opencv.hpp> #include <iostream> #include
OpenCV之影象處理(十六) 卷積運算元與自定義線性濾波
卷積概念 卷積是影象處理中一個操作,是kernel在影象的每個畫素上的操作。 Kernel本質上一個固定大小的矩陣陣列,其中心點稱為錨點(anchor point) 卷積如何工作 把kernel放到畫素陣列之上,求錨點周圍覆蓋的畫素乘積之
opencv-015 自定義線性濾波
自定義線性濾波 l卷積概念 l常見運算元 l自定義卷積模糊 l程式碼演示 卷積概念 l卷積是影象處理中一個操作,是kernel在影象的每個畫素上的操作。 lKernel本質上一個固定大小的矩陣陣列,其中心點稱為錨點(anchor point) 卷積如何工作
opencv 自定義線性濾波
#include<opencv2\opencv.hpp>#include<iostream>using namespace cv;using namespace std;int main(int argc, char**argv){Mat src =
Hadoop學習筆記—5.自定義類型處理手機上網日誌
clas stat 基本 手機上網 oop interrupt pil 依然 手機號碼 一、測試數據:手機上網日誌 1.1 關於這個日誌 假設我們如下一個日誌文件,這個文件的內容是來自某個電信運營商的手機上網日誌,文件的內容已經經過了優化,格式比較規整,便於學習研究。
ASP.NET MVC 學習筆記-7.自定義配置信息(後續)
字符串 return abstract 新的 work 生成 value DC 連接字符串加密 自定義配置信息的高級應用 通過上篇博文對簡單的自定義配置信息的學習,使得更加靈活的控制系統配置信息。實際項目中,這種配置的靈活度往往無法滿足項目的靈活度和擴展性。 比如,一個
Spark機器學習 自定義sql函式處理Vector型別
對於sparksql處理不了的型別,可以使用spark.udf.register自定義函式方法處理。 spark.udf.register("getPCA0", (s: Vector) => s(0)) spark.udf.register("getPCA1", (s
MySQL學習筆記-自定義函數
自定義函數 signed mysql pwm begin 多個 2個 list ive MySQL學習筆記-自定義函數 1.自定義函數簡介 自定義函數:用戶自定義函數(user-defined function,UDF)是一種對MySQL擴展的途徑,其用法與內置函數相同
struts2學習(6)自定義攔截器-登錄驗證攔截器
back tps class res urn fff .com space war 需求:對登錄進行驗證,用戶名cy 密碼123456才能登錄進去; 登錄進去後,將用戶存在session中; 其他鏈接要來訪問(除了登錄鏈接),首先驗證
dedecmsV5.7自定義圖片字段調用方法
類型 tmp lds dedecms blank www tpi java 解決方案 正常情況下,在列表頁(也就是 {dede:list}標簽)調用附加的圖片類型字段則會出現Fatal error: Call to a member function GetInnerTex
jsp自定義標簽處理轉義字符
char location xmlns exception Coding port exceptio bre tostring sun公司提供的jstl雖然比較強大,但是開發中很難滿足我們所有的需求,並且開發也禁止在jsp中寫很多java代碼,因此很多場景需要自己定義標簽進
zabbix的主動模式和被動模式、添加監控主機、添加自定義模板、處理圖形中的亂碼、自動發現
roo 清理 瀏覽器 間隔 原型 fin 監測 9.png sim 主動模式和被動模式 主動或者被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據匯報給服務端,服務
MVC路由學習:自定義路由參數(用戶看不到參數名),重新定義路由規則
route sys 工具 str optional href clas local amp 一,項目有需求將項目地址中的參數名不顯示給用戶看 在MVC定義一個方法: public ActionResult GetUserInfo(string Name, str
linux監控平臺搭建(2)主動和被動模式、添加監控主機、添加自定義模板、處理圖形亂碼、自動發現
添加監控主機 主動和被動模式 添加主機添加主機:1.添加主機群組:2.添加主機:點擊主機-->創建主機(1)應用集:是監控項的集合(如:cpu的集合,內存的集合)(2)監控項:監控的項目(cpu,內存)(3)觸發器:對監控項設定的告警規則,和告警級別。(4)圖形
日常學習隨筆-自定義了一個MyArrayListDefin集合(數組擴容+叠代器+JDK1.8新方法+詳細說明)
fin array rgs def spl 三種 叠代 ldd ner 一、自定義了一個ArrayList的模擬集合(源碼+詳細說明) 前段時間分析了下ArrayList集合的源碼,總覺得如果不自己定義一個的話,好像缺了點什麽,所以有了如下的代碼。 代碼可以說是逐行註
日常學習隨筆-自定義了一個雙鏈表(註釋蠻詳細的)
明顯 ret 含義 合法性 如何 author 移除 rev for 一、雙鏈表結構 最近總會抽出一些零碎的時間片段,嘗試按照自己的想法自定一了一個雙鏈表結構的集合。我發現,數組、單鏈表或者雙鏈表,乃至其他結構,本質上就是一種思想,只要遵循結構的核心思想,實現方法會有很
六十五、主動模式和被動模式、添加監控主機、添加自定義模板、處理圖形中的亂碼、自動發現
監控主機 自定義模板 圖形亂碼 自動發現 六十五、主動模式和被動模式、添加監控主機、添加自定義模板、處理圖形中的亂碼、自動發現一、主動模式和被動模式主動或者被動是相對客戶端來講的被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端主動模式,客戶端會主
主動模式和被動模式,添加監控主機,添加自定義模板,處理圖形中的亂碼,自動發現
zabbix主動模式和被動模式 主動或者被動是相對客戶端來講的被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。當客戶端數量非常多時,建議使用主動模式,這樣可以降低服務端的壓力。服務端有公網ip,
66.主動模式和被動模式、添加監控主機、添加自定義模板、處理圖形中的亂碼、自動發現
主動模式和被動模式 添加監控主機 添加自定義模板 處理圖形中的亂碼 一、主動模式和被動模式 主動或者被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。