【问题标题】:OpenCV(4.5.2)/tmp/pip-req-build-eirhwqtr/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'OpenCV(4.5.2)/tmp/pip-req-build-eirhwqtr/opencv/modules/imgproc/src/color.cpp:182:错误:(-215:断言失败)!_src.empty()在函数'cvtColor '
【发布时间】:2021-05-17 03:47:29
【问题描述】:

我想从我使用 django 表单上传的图像中提取文本。 这是我的观点。py

from django.http.response import HttpResponseBadRequest
from django.shortcuts import render, redirect, reverse
from django.contrib.auth import login, authenticate
from django.contrib.auth.forms import PasswordChangeForm, UserCreationForm
from django.contrib.auth.decorators import login_required
from .forms import UploadFileForm, EditFileName
from .models import Image
import cv2
import pytesseract


@login_required
def home(request):
    context = {}

    if request.method == "POST":
        print(request.user)
        form = UploadFileForm(request.POST, request.FILES)
        print(request.FILES)
        if form.is_valid():
            username = request.user
            image_text = request.FILES["image"].name
            image = form.cleaned_data.get("image")
            image_path = "../media/storage" + str(image)
            image_clone = cv2.imread(image_path)
            image_clone = cv2.cvtColor(image_clone, cv2.COLOR_BGR2GRAY)
            image_clone = cv2.threshold(
                image_clone, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
            image_clone = cv2.medianBlur(image_clone, 5)
            OCRtext = pytesseract.image_to_string(image_clone)
            obj = Image.objects.create(
                username=username,
                image_text=image_text,
                image=image,
                OCRtext=OCRtext
            )
            obj.save()
            print(obj)
    else:
        form = UploadFileForm()
        form2 = EditFileName()
        context['form2'] = form2
    context['form'] = form
    context['data'] = Image.objects.all()
    print(context)
    return render(request, "registration/success.html", context)


def edit(request):
    context = {}
    if request.method == "POST":
        print('--------------')
        form2 = EditFileName(request.POST)
        if form2.is_valid():
            username = request.user
            image_text = form2.cleaned_data.get("image_text")
            obj = Image.objects.filter(id=request.POST['image_id']).update(
                image_text=image_text
            )

            print('obj in form2', obj)
    form2 = EditFileName()
    context['form2'] = form2
    form = UploadFileForm()
    context['form'] = form
    context['data'] = Image.objects.all()
    print(context)
    return redirect('/home/')


def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=password)
            login(request, user)
            return redirect('home')
    else:
        form = UserCreationForm()
    return render(request, 'registration/register.html', {'form': form})

我收到此错误 -

File "/media/samarpan/DATA1/task/users/views.py", line 26, in home
    image_clone = cv2.cvtColor(image_clone, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.5.2) /tmp/pip-req-build-eirhwqtr/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

django表单上传的图片存储在request.FILES。我需要获取图片路径。

我了解此错误是因为图像源在 image_path = "../media/storage" + str(image) 中不正确 - 解决方法是什么?

repo 链接 - https://github.com/smrpn/task/

【问题讨论】:

  • 打印出image_path。这是你所期望的吗?它是否为您提供所需图像的正确路径?

标签: python-3.x opencv django-views django-forms python-tesseract


【解决方案1】:

我也遇到了类似的错误

“错误:OpenCV(4.5.2)/tmp/pip-req-build-eirhwqtr/opencv/modules/imgproc/src/color.cpp:182:错误:(-215:断言失败)!_src.empty () 函数'cvtColor'"

但这是因为我错误地给出了错误的图像路径。

【讨论】:

    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 2021-10-06
    • 2015-09-26
    • 2022-07-18
    • 2022-01-10
    • 2020-08-11
    • 2014-01-16
    相关资源
    最近更新 更多