Как использовать веб-камеру для захвата изображения и извлечения информации о нем с помощью Python? - PullRequest
0 голосов
/ 29 сентября 2019

Я пытался захватить изображение на веб-камеру и извлечь текстовую информацию на нем, используя язык python.

Вот код:

import cv2
import matplotlib.pyplot as plt
import numpy as np
import pytesseract

from PIL import Image
from pytesseract import image_to_string

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

def main():
    # Use the attached camera to capture images
    # 0 stands for the first one
    cap = cv2.VideoCapture(0)   

    if cap.isOpened():
        ret, frame = cap.read()
        print(ret)
        print(frame)
    else:
        ret = False

    img1 = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    # img = Image.open('image.jpg')
    text = pytesseract.image_to_string(img1)
    print(text)

    # plt.imshow(img1)
    # plt.title('Color Image RGB')
    # plt.xticks([])
    # plt.yticks([])
    # plt.show()


    cap.release()

if __name__ == "__main__":
main()

Код не былт работа.Я посмотрел пару видео на Youtube и увидел, что люди обычно используют Image.open ("image.jpg"), чтобы открыть изображение, расположенное на компьютере.Но мне нужно захватить изображение с веб-камеры и извлечь информацию о нем.Так что этот метод не будет работать в моей ситуации.Есть ли способ объединить эти два метода?Как захватить изображение с помощью cv2 и извлечь информацию с помощью pytesseract.image_to_string ()?

1 Ответ

1 голос
/ 29 сентября 2019

Не могли бы вы попробовать, заменив приведенный ниже код строки,

text = pytesseract.image_to_string(img1)

Кодом,

text = pytesseract.image_to_string(Image.fromarray(img1))

Или приведите здесь фрагмент рабочего кода (Скопировал код инемного обновлено),

def main():
    # Use the attached camera to capture images
    # 0 stands for the first one
    cap = cv2.VideoCapture(0)
    while cap.isOpened():
        ret, frame = cap.read()
        img1 = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        text = pytesseract.image_to_string(Image.fromarray(img1))
        cv2.imshow('frame', img1)
        if cv2.waitKey(0) & 0xFF == ord('q'):
            return None
        print("Extracted Text: ", text)
    cap.release()

Надеюсь, что это поможет вам.

Я использовал пока look, потому что при условии, что я не получил результат, пытаясь выяснить это.

...