1

OpenCVのみを使用してバイクのナンバープレートを検出することに取り組んできました。私の質問は:

  1. 最大の輪郭 (ナンバー プレートの周囲) だけを見つけて描画することはできますか?
  2. そうでない場合、この問題に対して何をすべきですか?
  3. バイクのナンバープレートを検出する他の方法はありますか?

これが私の元の画像です

そして、これがすべての長方形の輪郭を検出した後の画像です

ここにソースコードがあります

import cv2

image = cv2.imread('image_0002.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
canny = cv2.Canny(blurred, 120, 255, 1)

# Find contours
cnts = cv2.findContours(canny, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]

# Iterate thorugh contours and draw rectangles around contours
for c in cnts:
    x,y,w,h = cv2.boundingRect(c)
    cv2.rectangle(image, (x, y), (x + w, y + h), (36,255,12), 2)

cv2.imshow('canny', canny)
cv2.imshow('image', image)
cv2.imwrite('canny.png', canny)
cv2.imwrite('image.png', image)
cv2.waitKey(0)
4

1 に答える 1

2

1- 最大の長方形の場合 - すべての長方形の面積を計算します

largest_area = 0
for c in cnts:
    x,y,w,h = cv2.boundingRect(c)
    area = 4*w*h
    if area > largest_area:
        largest_area = area
        largest_area_contour = c

これで、最大の長方形ができました。描いてみましょう(の外側for loop)。

x,y,w,h = cv2.boundingRect(largest_area_contour)
cv2.rectangle(image, (x, y), (x + w, y + h), (36,255,12), 2)

2- モデルがあまりにも多くの誤検知を与えています。最大の長方形メソッドが常に機能していることを確認してください。

3- ナンバー プレート (車やバイクは関係ありません) の読み方は、よく研究されているおもちゃの問題です。インターネット上で多くの議論が見られます。

于 2021-01-14T05:47:17.357 に答える