wld差分激励 sobel算子

本文探讨了Sobel算子在图像处理中的应用,重点在于其在边缘检测中的作用。通过介绍Sobel算子的原理和计算方法,阐述了如何利用该算子进行图像的二值化处理,进而提取图像的轮廓特征。
摘要由CSDN通过智能技术生成

 

Mat QRRecognition::differential_excitation(Mat inputImg)
{
    //生成kernel_size * kernel_size大小卷积核kernel
    //Mat kernel = (Mat_<float>(kernel_size, kernel_size));
    /*for (int i = 0; i < kernel_size; i++)
    {
    for (int j = 0;j < kernel_size;j++)
    {
    if ((i == (kernel_size / 2)) && (j == (kernel_size / 2)))
    {
    kernel.ptr<float>[i, j] = -8;
    }
    else
    {
    kernel.ptr<float>[i, j] = 1;
    }
    }
    }*/
    Mat kernel = (Mat_<char>(3, 3) << -1, -1, -1, -1, 8, -1, -1, -1, -1);

    Mat dstImage(inputImg.rows, inputImg.cols, CV_8UC1);
    Mat temImg(inputImg.rows, inputImg.cols, CV_8UC1);
    filter2D(inputImg, dstImage, inputImg.depth(), kernel);
    cout << inputImg.rows << "...." << inputImg.cols << endl;
    cout << dstImage.rows << "...." << dstImage.cols << endl;
    for (int i = 0;i < inputImg.rows;i++)
    {
        for (int j = 0;j < inputImg.cols;j++)
        {
            //cout << "..." << inputImg.at<uchar>(i, j) << endl;
            if (inputImg.ptr<float>(i, j)[0] == 0)
            {
                temImg.ptr<float>(i, j)[0] = 0;
            }
            else
                temImg.ptr<float>(i, j)[0] = (dstImage.ptr<float>(i, j)[0] / inputImg.ptr<float>(i, j)[0]);// +inputImg.ptr<float>(i, j)[0];
        }
    }


    return dstImage;
}

Sobel算子

Mat barCode::getSobel(Mat image, bool show) {
	Mat cimageX16s, cimageY16s, imageSobelX, imageSobelY, out;
	Sobel(image, cimageX16s, CV_16S, 1, 0, 3, 1, 0, 4);
	Sobel(image, cimageY16s, CV_16S, 0, 1, 3, 1, 0, 4);
	convertScaleAbs(cimageX16s, imageSobelX, 1, 0);
	convertScaleAbs(cimageY16s, imageSobelY, 1, 0);
	out = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值