2、OPENCV常用的图像处理

常用的图像处理步骤: 图像二值化—> 高斯模糊(滤噪)—>Canny边缘检测—>Dilate/Erode(放大/缩小)

其中放大及缩小是对图像检测的边缘进行操作,如对图像的边缘线进行加粗便为放大。

具体见代码:

#include 
#include  // 说是说gui 具体什么gui 不清楚
#include  // 图像头文件
#include  // 图像处理头文件
using namespace std;
using namespace cv;
/// Basic Function  //

int main()
{
    string path = "resources/test.png"; // 导入图形的时候,先要在右边点击显示所有文件!!!
    Mat img = imread(path); // 在opencv 中所有的图像信息都使用Mat 
    Mat imgGRAY,imgBlur,imgCanny,imgDil,imgErode;
    // 想要转换并且处理图像应该使用 cvtColor 函数  系列操作将图像转换为灰度图
    cvtColor(img, imgGRAY, COLOR_BGR2GRAY); // OPencv 中含有BGR 协议而不是RGB协议、
    // 高斯滤噪 模糊
    GaussianBlur(imgGRAY, imgBlur, Size(3,3),3,0); // 该Size 图像具体哪里来的,不是很清楚
    // Canny 边缘检测, 在进行Canny边缘检测之前我们一般会进行高斯滤波
    Canny(imgBlur, imgCanny, 25, 75); // 后面两个参数即Canny 边缘检测的阈值

    // How to dilate and erode an image 
    // dilate : increase the thickness to convenietly detect  即增加边线的厚度,使其显示的更加明显
    // erode :  decrease the thickness
    Mat kernel = getStructuringElement(MORPH_RECT, Size(3,3)); // 更改Size 的大小便更改了放大倍数 注意Size 只能选择奇数
    Mat Kernel = getStructuringElement(MORPH_RECT, Size(3,3));
    dilate(imgCanny, imgDil, kernel); // 使用getStructruingElement 创建kernel
    erode(imgDil, imgErode, Kernel); // kernel 可以重新创建一个 也可以使用原来的kernel 

    imshow("Image", img);
    imshow("Image Gray", imgGRAY);
    imshow("Image Blur", imgBlur);
    imshow("Image Canny", imgCanny);
    imshow("Image Dilation", imgDil);
    imshow("Image Erode", imgErode);

    waitKey(0); // 延时,0即相当于无穷大
}

运行结果:

2、OPENCV常用的图像处理_第1张图片

2、OPENCV常用的图像处理_第2张图片

2、OPENCV常用的图像处理_第3张图片

2、OPENCV常用的图像处理_第4张图片

2、OPENCV常用的图像处理_第5张图片

2、OPENCV常用的图像处理_第6张图片

你可能感兴趣的:(OPENCV,opencv,cv,计算机视觉,边缘检测,c++)