车牌 ocr java_在OpenCV C中将车牌标准化为OCR

你需要使用仿射变换,这里有tutorial . 在您的情况下,您需要选择一些尺寸的车牌,例如 20x100 . 您的目标点将是选择大小的非旋转矩形的3个角,源点将是已 Build 的汽车板的3个角 . 我希望很清楚,如果它不是,请让我知道 - 我会举一些例子 .

*\EDIT:

好的,我已经做了一些例子 . 这是代码:

cv::Mat img = cv::imread("D:\\temp\\car_plate.jpg");

cv::Point2f a1(25, 18), b1(279, 27), c1(279, 79), a2(0, 0), b2(img.size().width, 0), c2(img.size().width, img.size().height);

//cv::Point2f a1(0, 16), b1(303, 28), c1(303, 81), a2(0, 0), b2(img.size().width, 0), c2(img.size().width, img.size().height);

cv::Point2f src[] = {a1, b1, c1};

cv::Point2f dst[] = {a2, b2, c2};

cv::Mat warpMat = cv::getAffineTransform(src, dst);

cv::warpAffine(img, img, warpMat, img.size());

cv::imshow("result", img);

cv::waitKey(-1);

return 0;

结果:

789845f8-393b-4c4c-93bb-0e3cb66311d1.jpg

08494412-af76-4521-835d-c43c1687e8b6.jpg

如果您将使用代码而不进行任何修改,您将获得第一个结果,如果您注释第二行并取消注释第三行,您将获得第二个结果(我认为's what you wanted). To get the second result you just need to find the points where upper and lower lines cross the image border. I' ve在此处标记了它:

50c725a3-2e6e-4774-86fb-7062c94601cb.jpg

所以基本上你需要使用红点 . 要计算它们的位置,你只需要找到蓝线(如果我理解你已经有的话)穿过图像边框 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值