Python - OpenCV+MatplotLib
This commit is contained in:
commit
d4afee48f8
|
@ -0,0 +1,42 @@
|
|||
from pytesseract import Output
|
||||
import pytesseract
|
||||
import cv2
|
||||
|
||||
image = cv2.imread("my_image.jpg")
|
||||
|
||||
#swap color channel ordering from BGR (OpenCV’s default) to RGB (compatible with Tesseract and pytesseract).
|
||||
# By default OpenCV stores images in BGR format and since pytesseract assumes RGB format,
|
||||
# we need to convert from BGR to RGB format/mode:
|
||||
rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
|
||||
|
||||
pytesseract.pytesseract.tesseract_cmd = r'C:\mypath\tesseract.exe'
|
||||
custom_config = r'-c tessedit_char_whitelist=0123456789 --psm 6'
|
||||
results = pytesseract.image_to_data(rgb, output_type=Output.DICT,lang='eng',config=custom_config)
|
||||
boxresults = pytesseract.image_to_boxes(rgb,output_type=Output.DICT,lang='eng',config=custom_config)
|
||||
print(results)
|
||||
print(boxresults)
|
||||
|
||||
for i in range(0, len(results["text"])):
|
||||
# extract the bounding box coordinates of the text region from the current result
|
||||
tmp_tl_x = results["left"][i]
|
||||
tmp_tl_y = results["top"][i]
|
||||
tmp_br_x = tmp_tl_x + results["width"][i]
|
||||
tmp_br_y = tmp_tl_y + results["height"][i]
|
||||
tmp_level = results["level"][i]
|
||||
conf = results["conf"][i]
|
||||
text = results["text"][i]
|
||||
|
||||
if(tmp_level == 5):
|
||||
cv2.putText(image, text, (tmp_tl_x, tmp_tl_y - 10), cv2.FONT_HERSHEY_SIMPLEX,0.5, (0, 0, 255), 1)
|
||||
cv2.rectangle(image, (tmp_tl_x, tmp_tl_y), (tmp_br_x, tmp_br_y), (0, 0, 255), 1)
|
||||
|
||||
for j in range(0,len(boxresults["left"])):
|
||||
left = boxresults["left"][j]
|
||||
bottom = boxresults["bottom"][j]
|
||||
right = boxresults["right"][j]
|
||||
top = boxresults["top"][j]
|
||||
cv2.rectangle(image, (left, top), (right, bottom), (255, 0, 0), 1)
|
||||
|
||||
|
||||
cv2.imshow("image",image)
|
||||
cv2.waitKey(0)
|
|
@ -0,0 +1,29 @@
|
|||
import cv2
|
||||
|
||||
# Load iamge, grayscale, adaptive threshold
|
||||
image = cv2.imread('1.png')
|
||||
result = image.copy()
|
||||
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
|
||||
thresh = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV,51,9)
|
||||
|
||||
# Fill rectangular contours
|
||||
cnts = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
||||
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
|
||||
for c in cnts:
|
||||
cv2.drawContours(thresh, [c], -1, (255,255,255), -1)
|
||||
|
||||
# Morph open
|
||||
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (9,9))
|
||||
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=4)
|
||||
|
||||
# Draw rectangles
|
||||
cnts = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
||||
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
|
||||
for c in cnts:
|
||||
x,y,w,h = cv2.boundingRect(c)
|
||||
cv2.rectangle(image, (x, y), (x + w, y + h), (36,255,12), 3)
|
||||
|
||||
cv2.imshow('thresh', thresh)
|
||||
cv2.imshow('opening', opening)
|
||||
cv2.imshow('image', image)
|
||||
cv2.waitKey()
|
|
@ -0,0 +1,11 @@
|
|||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from PIL import Image
|
||||
|
||||
fname = 'image.png'
|
||||
image = Image.open(fname).convert("L")
|
||||
arr = np.asarray(image)
|
||||
plt.imshow(arr, cmap='gray', vmin=0, vmax=255)
|
||||
plt.show()
|
||||
|
||||
# If you want to display the inverse grayscale, switch the cmap to cmap='gray_r'
|
|
@ -0,0 +1,12 @@
|
|||
import cv2
|
||||
import glob
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
path="data/*.jpg"
|
||||
|
||||
images=[cv2.imread(image) for image in glob.glob(path)]
|
||||
fig=plt.figure()
|
||||
for i in range(len(images)):
|
||||
plt.subplot(5,5,i+1)
|
||||
plt.imshow(images[i])
|
||||
plt.show()
|
Loading…
Reference in New Issue