1. 程式人生 > >openCV學習7-自定義線性濾波+處理邊緣

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.主動模式和被動模式、添加監控主機、添加定義模板、處理圖形中的亂碼、自動發現

主動模式和被動模式 添加監控主機 添加自定義模板 處理圖形中的亂碼 一、主動模式和被動模式 主動或者被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。