图像变换
一、边缘检测
1:边缘检测 Canny
cv::Mat iamgeCan;cv::Canny(image, iamgeCan, 3, 9, 3);cv::imshow("Canny", iamgeCan);
/// 边缘检测高级用法 Canny用法cv::Mat dst, edge, gray;dst.create(image.size(), image.type());/// 图像转灰度图像cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);/// 用3*3内核降噪cv::blur(gray, edge, cv::Size(3, 3));/// 运行canny算子cv::Canny(edge, edge, 3, 9, 3);/// dst所有元素设置0dst = cv::Scalar::all(0);image.copyTo(dst, edge);cv::imshow("Canny1", dst);
2:边缘检测 Sobel用法
cv::Mat grad_x, grad_y;cv::Mat abs_grad_x, abs_grad_y, dst;/// 求x方向梯度cv::Sobel(image, grad_x, CV_16S, 1, 0, 3, 1, 1, cv::BORDER_DEFAULT);cv::convertScaleAbs(grad_x, abs_grad_x);cv::imshow("abs_grad_x", abs_grad_x);/// 求Y方向梯度cv::Sobel(image, grad_y, CV_16S, 0, 1, 3, 1, 1, cv::BORDER_DEFAULT);cv::convertScaleAbs(grad_x, abs_grad_y);cv::imshow("abs_grad_y", abs_grad_y);/// 合并方向梯度cv::addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);cv::imshow("dst", dst);
3:边缘检测 Laplacian用法
cv::Mat src_gray, dst, abs_dst;/// 用高斯滤波消除噪声cv::GaussianBlur(image, image, cv::Size(3,3), 0, 0, cv::BORDER_DEFAULT);/// 转换为灰度图cv::cvtColor(image, src_gray, cv::COLOR_BGR2GRAY);/// Laplaciancv::Laplacian(src_gray, dst, CV_16S, 3, 1, 0, cv::BORDER_DEFAULT);/// 计算绝对值cv::convertScaleAbs(dst, abs_dst);cv::imshow("abs_dst", abs_dst);
4:边缘检测 Scharr滤波器用法
cv::Mat grad_x, grad_y;cv::Mat abs_grad_x, abs_grad_y, dst;/// 求x方向梯度cv::Scharr(image, grad_x, CV_16S, 1, 0, 1, 0, cv::BORDER_DEFAULT);cv::convertScaleAbs(grad_x, abs_grad_x);cv::imshow("abs_grad_x", abs_grad_x);/// 求Y方向梯度cv::Scharr(image, grad_y, CV_16S, 0, 1, 1, 0, cv::BORDER_DEFAULT);cv::convertScaleAbs(grad_x, abs_grad_y);cv::imshow("abs_grad_y", abs_grad_y);/// 合并方向梯度cv::addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);cv::imshow("dst", dst);
好了,后面学习下霍夫变换