赞
踩
参考:b站某视频教程。
需要安装tesseract来识别文字。
python实现:
import cv2 import numpy as np import pytesseract plate = cv2.CascadeClassifier("haarcascade_russian_plate_number.xml") img = cv2.imread("car.png") gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) plates = plate.detectMultiScale(gray, 1.1, 3) for (x,y,w,h) in plates: cv2.rectangle(img, (x,y), (x+w,y+h), (0,0,255), 2) roi = gray[y:y+h, x:x+w] thres, roi = cv2.threshold(roi, 0, 255, cv2.THRESH_OTSU) res = pytesseract.image_to_string(roi, lang="chi_sim+eng",config="--psm 8 --oem 3") print(res) cv2.imshow("img",roi) cv2.waitKey()
C++实现:
#include <iostream> #include <opencv2/opencv.hpp> int main(int argc, char** argv) { cv::CascadeClassifier plate; plate.load("haarcascade_russian_plate_number.xml"); cv::Mat img = cv::imread("car.png"), gray; cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY); std::vector<cv::Rect> plates; plate.detectMultiScale(gray, plates, 1.1, 3); for (size_t i = 0; i < plates.size(); i++) { cv::rectangle(img, plates[i], cv::Scalar(0, 0, 255), 2); cv::Mat roi = gray(cv::Rect(plates[i])); cv::threshold(roi, roi, 0, 255, cv::THRESH_OTSU); } system("tesseract roi.png result"); cv::imwrite("result.png", img); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。