opencv笔记十六(常见边缘算子,自定义边缘算子)效果Laplacian>Canny>Sobel>Robert

基础理论:卷积

 

1,Robert算子(体现斜对角线放线的差异):

结果图:

2,Sobel算子(体现x方向和y方向的差异)

运行结果(优于Robert算子):

3,拉普拉斯算子

运行结果(较好的保留了轮廓边缘):

 

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;

RNG rng(123456);
int i = 1,j=255;
Mat t1, t2,t3,t4,t5,t6;
char *c = "TRY";
void TRY(int, void*);
int main(int agrc, char** agrv) {
	t1 = imread("test1.jpg");
	if (!t1.data ) {
		cout << "WRONG";
		return -1;
	}
	cvtColor(t1, t1, CV_BGR2GRAY);
	namedWindow("CANNY", 0);
	namedWindow("LA", 0);
	namedWindow("SOBEL", 0);
	resizeWindow("CANNY", 1000, 200);
	resizeWindow("LA", 1000, 200);
	resizeWindow("SOBEL", 1000, 200);
	resizeWindow("R", 1000, 200);
	Mat x = (Mat_<char>(2, 2) << 1, 0, 0, -1);
	threshold(t1, t2, i, 255, THRESH_BINARY | THRESH_OTSU);
	Canny(t2, t3, 0, 1, 3, false);
	Laplacian(t2, t4, -1, 1, 1, 0, BORDER_DEFAULT);
	Sobel(t2, t5, -1, 0, 1, 3, 1, 0, BORDER_DEFAULT);
	filter2D(t2, t6, -1, x, Point(-1, -1), 0, BORDER_DEFAULT);
	imshow("CANNY", t3);
	imshow("LA", t4);
	imshow("SOBEL", t5);
	imshow("R", t6);

	waitKey(0);
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值