gpt4 book ai didi

c++ - Opencv C++ 阈值在 absdiff、条码检测后不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 13:41:16 24 4
gpt4 key购买 nike

我正在尝试使用 OpenCv 从图像中检测条形码,我正在使用渐变法:http://www.pyimagesearch.com/2014/11/24/detecting-barcodes-images-python-opencv/在以下问题的帮助下:How to find the location of red region in an image using MATLAB?

代码:

Mat imgco,img,imgx,imgy,thresh;
imgco = imread("/Users/a/Desktop/barcode_01.jpg");

//### Convert image to grayscale ###
cvtColor(imgco,img,CV_BGR2GRAY);
imshow("img", img);
waitKey(0);

//### Finding horizontal and vertical gradient ###

Sobel(img,imgx,CV_16S,1,0,-1,50,0,BORDER_DEFAULT);
imgx = abs(imgx);
imshow("img", imgx);
waitKey(0);

Sobel(img,imgy,CV_16S,0,1,-1,50,0,BORDER_DEFAULT);
imgy = abs(imgy);
imshow("img", imgy);
waitKey(0);

absdiff(imgx, imgy, img);
imshow("img", img);
waitKey(0);

//### Low pass filtering ###
GaussianBlur(img, img, Size(9,9), 0);
imshow("img", img);
waitKey(0);

//### Applying Threshold ###
threshold(img,thresh,225,255,CV_THRESH_BINARY);
imshow("img", thresh);
waitKey(0);

现在程序可以正确处理高斯模糊,尝试以某种方式对图像进行阈值处理会得到空白输出。谁能建议可能是什么问题?

Gaussian Output: Threshold Output:

谢谢。

更新:在 AbsDiff 之前应用阈值操作,导致阈值正确。因此,有一些与使用 AbsDiff 相关的东西,那就是搞乱了阈值。有帮助吗?

更新 2:将我的输出与以下内容进行比较:http://www.pyimagesearch.com/wp-content/uploads/2014/11/barcode_gradient_and_detection.jpg 我意识到我得到的是灰色图像,而作者得到的是清晰的黑色免费背景?即使我们正在执行相同的操作。谢谢。

最佳答案

好的解决方案:

1) 不需要在梯度操作中使用缩放。

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

img.convertTo(img, CV_8U, 0.00390625);

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

关于c++ - Opencv C++ 阈值在 absdiff、条码检测后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27587931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com