>
from PIL import Image
import pytesseract
from pdf2image import convert_from_path
import os
import pandas as pd
import cv2
import numpy as np
files = os.chdir("C:/Users/abhishek_kumar1/Desktop/New folder")
#print(os.getcwd())
pages = convert_from_path("d.pdf",190,single_file=True,
                      poppler_path='C:/Users/abhishek_kumar1/Downloads/poppler-0.68.0_x86/poppler-0.68.0/bin')
image_counter=1
for page in pages:
    filename = "page_"+str(image_counter)+".jpg"
    page.save(filename,'JPEG')
img = cv2.imread(filename)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite('grey.png',gray)
binary,thresh1 = cv2.threshold(gray, 0, 255,cv2.THRESH_OTSU|cv2.THRESH_BINARY_INV)
cv2.imwrite('Thresh1.png',thresh1)
rect_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (15, 3))
dilation = cv2.dilate(thresh1, rect_kernel, iterations = 6)
contours, hierarchy = cv2.findContours(dilation, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
im2 = img.copy()

ROI_number = 0
for cnt in contours[::-1]:
    [x,y,w,h] = cv2.boundingRect(cnt)
    ROI=im2[y:y+h, x:x+w]
    #print(str(w),str(h))
    #cv2.putText(im2, str(h), (x,y - 10 ), cv2.FONT_HERSHEY_SIMPLEX, 0.1, (255, 0, 0), 1)
    #cv2.putText(im2, str(w), (x,y + 10 ), cv2.FONT_HERSHEY_SIMPLEX, 0.1, (0, 0, 255), 1)
    cv2.imwrite('ROI_{}.jpg'.format(ROI_number),ROI)
    cv2.rectangle(im2,(x,y),(x+w,y+h),(36,255,12),1)
    ROI_number += 1
cv2.imwrite('contours1.png',im2)

위의 코드 섹션 섹션 에서이 이미지 만 찾는 방법은 굵은 기울임 꼴, 기울임 꼴 등의 이미지에서 글꼴 유형을 이해하는 옵션이 있습니까? 모든 이미지에서 굵은 선 부분 만 찾기가 어려워집니다. 이것에 관한 제안이 있으시면 제발 도와주세요.


  • 답변 # 1

    파이썬 코드 및 결과를 참조하십시오.

    import cv2
    import numpy as np
    img = cv2.imread('C.png')
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    thresh = cv2.threshold(gray, 160, 255, cv2.THRESH_BINARY)[1]
    kernel = np.ones((5,5),np.uint8)
    kernel2 = np.ones((3,3),np.uint8)
    marker = cv2.dilate(thresh,kernel,iterations = 1)
    mask=cv2.erode(thresh,kernel,iterations = 1)
    while True:
        tmp=marker.copy()
        marker=cv2.erode(marker, kernel2)
        marker=cv2.max(mask, marker)
        difference = cv2.subtract(tmp, marker)
        if cv2.countNonZero(difference) == 0:
            break
    marker_color = cv2.cvtColor(marker, cv2.COLOR_GRAY2BGR)
    out=cv2.bitwise_or(img, marker_color)
    cv2.imwrite('out.png', out)
    cv2.imshow('result', out )
    
    

  • 이전 reactjs - 여러 배열의 중첩 배열이있는 다차원 객체가 있으며 한 번에 모든 것을 통해 매핑하려고하지만 어떻게 해야할지 잘 모르겠습니다
  • 다음 1GB 파일 다운로드시 JMeter에서 Uncaught Exception javalangOutOfMemoryError