HAD*_*DEV 8 java opencv image-processing javacv
这是我原来的图片,我想找到这个盘子,以便在这个矩形中搜索车牌,而不是在整个图片中搜索
原始图片test_1.jpg:

在javacv中使用以下代码:
IplImage originalImage = cvLoadImage("test_1.jpg");
IplImage resultImage = IplImage.create(originalImage.width(),
originalImage.height(), IPL_DEPTH_8U, 1);
cvCvtColor(originalImage, resultImage, CV_BGR2GRAY);
cvAdaptiveThreshold(resultImage, resultImage, 255, CV_ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY_INV, 7, 7);
cvSaveImage("test_2.jpg", resultImage);
Run Code Online (Sandbox Code Playgroud)
结果图片是test_2.jpg看起来像这样:

并通过给予thresholdImg resultImg来添加此代码
static void findLines(IplImage thresholdImg)
{
IplImage dst;
IplImage colorDst;
dst = cvCreateImage(cvGetSize(thresholdImg), thresholdImg.depth(), 1);
colorDst = cvCreateImage(cvGetSize(thresholdImg), thresholdImg.depth(), 3);
cvCanny(thresholdImg, dst, 100, 200, 3);
CvSeq lines = new CvSeq();
CvMemStorage storage = cvCreateMemStorage(100000);
cvSaveImage("test_3.jpg", dst);
}
Run Code Online (Sandbox Code Playgroud)
结果图片test_3.jpg:

是否有任何我生成的图片可用于继续我的代码,以便找到图像中包含板的矩形
你正朝着正确的方向前进。
在对图像进行阈值处理之前,您需要执行某种平滑/模糊操作,以消除不需要的噪声
像现在一样对图像应用阈值
使用 openCv 库的 dilate 函数稍微扩大检测到的边缘。这很有用,因为一旦车牌字符被放大,它们就会填充包含它们的矩形
openCV 有一个名为 cvRectangle 的函数,用于搜索图像中的矩形形状。网上有大量文档可以帮助您使用它
最后,您需要根据比率(宽度/高度)和面积(宽度 * 高度)过滤找到的候选车牌矩形。例如,葡萄牙车牌,至少在我的测试图像中,比例在 2 到 3.5 之间,面积约为 5000-7000 像素。显然这取决于车牌的形状、图像尺寸等。
我向你保证这个方法是有效的。我自己使用过它,它可以在我测试的车辆照片中检测到 99.5% 的车牌区域。
如果您的图片太亮,您可能想做的一件事是在阈值之前使用 Sobel 滤波器(也可在 opencv 库中使用)。这意味着仅在步骤 2 中进行更改,其他保持不变。
希望我能有所帮助:)