C++ Opencv C++;absdiff、条形码检测后阈值不工作

C++ Opencv C++;absdiff、条形码检测后阈值不工作,c++,opencv,image-processing,barcode-scanner,threshold,C++,Opencv,Image Processing,Barcode Scanner,Threshold,我正在尝试使用OpenCv从图像中检测条形码, 我使用的是梯度法: 在以下问题的帮助下: 代码: 现在,该程序可以正确地工作到高斯模糊,以某种方式尝试阈值图像给出一个空白输出。有人能提出问题所在吗 多谢各位 更新:在AbsDiff之前应用阈值操作,可正确设置阈值。因此,有一些与使用AbsDiff相关的东西,那就是弄乱了阈值。有什么帮助吗 更新2:将我的输出与以下内容进行比较:我意识到我得到的是灰色图像,而作者得到的是清晰的黑色背景?即使我们正在执行相同的操作。谢谢。好的解决方案: 1) 无需

我正在尝试使用OpenCv从图像中检测条形码, 我使用的是梯度法: 在以下问题的帮助下:

代码:

现在,该程序可以正确地工作到高斯模糊,以某种方式尝试阈值图像给出一个空白输出。有人能提出问题所在吗

多谢各位

更新:在AbsDiff之前应用阈值操作,可正确设置阈值。因此,有一些与使用AbsDiff相关的东西,那就是弄乱了阈值。有什么帮助吗

更新2:将我的输出与以下内容进行比较:我意识到我得到的是灰色图像,而作者得到的是清晰的黑色背景?即使我们正在执行相同的操作。谢谢。

好的解决方案:

1) 无需在渐变操作中使用缩放

2) 有必要使用convertScaleAbs方法将图像转换为8bit

img.convertTo(img, CV_8U, 0.00390625);

不起作用。解决问题!:)在pyimage作者的帮助下

您的sobel Op生成16位图像,而阈值中的值为8位。您是否可以添加原始图像(没有任何过滤)?您好,是的。原始图像:我尝试使用:img.convertTo(img,CV_8U,0.00390625)将其缩放到8位;仍然阈值化会给出相同的输出。此外,在AbsDiff之前应用阈值操作,可以正确地进行阈值化。因此,有一些与使用AbsDiff相关的东西,那就是弄乱了阈值。
img.convertTo(img, CV_8U, 0.00390625);