@Fee1in

Заменить часть изображения opencv?

Все привет! Не получается заменить горизонтальные линии в изображении такими же горизонтальными линиями, но смещенными, т.е замазать горизонтальную линию чтобы потом можно было легче распознать цифры.
Ругается на "ValueError: could not broadcast input array from shape (47,16,3) into shape (51,20,3)"
Правильно ли я понимаю, что он ругается на то что я пытаюсь во фрагмент который имеет определенные размеры вставить объект который больше по размерам или нет? Что не правильно?
картинка в примере 661192057a235364720394.jpeg
import numpy as np
import cv2
image = cv2.imread('crop4.jpg',1)

def summa(item):
    item=np.add(item,10)
    item = np.intc(item)
    if item>=100:
        item=np.intc(100)
    elif item<=0:
        item=np.intc(0)
    return item
cv2.imshow('Lines1', image)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edged = cv2.Canny(gray, 160, 250)
lines=cv2.HoughLinesP(edged,1,np.pi/180,30,minLineLength=10, maxLineGap=10)
lin_horiz=[]
lin_vert=[]
for i in range(len(lines)):
    lin=lines[i][0]
    if lin[0]==lin[2]:
        lin_vert.append(lin)
    elif lin[1]==lin[3]:
        lin_horiz.append(lin)
for i, lin in enumerate(lin_horiz):
#Линии которые надо заменить
    cv2.line(image, (lin[0], lin[1]), (lin[2], lin[3]), (0, 0, 255), 1)
#Замена линии
    img[lin[0]:summa(lin[1]), lin[2]:summa(lin[3])]=img[lin[0]:lin[1], lin[2]:lin[3]]
cv2.imshow("change_44444", image)
cv2.imshow("change_line", img)
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы