การตรวจจับบริเวณตัวเลขบนหน้าปัดมิเตอร์น้ำด้วย Python, Opencv

Dr. Pathasu Doungmala
2 min readApr 16, 2021

--

1. import ต่อ library

import os
from PIL import Image
import cv2
import imutils
import numpy as np

2. อ่านภาพ

img = cv2.imread(“1615817564151.jpg”)

3. ทำภาพให้เบลอ

imgBlurred = cv2.GaussianBlur(img, (5,5), 0)

4. แปลงภาพเป็น gray scale

gray = cv2.cvtColor(imgBlurred, cv2.COLOR_BGR2GRAY)

5. หาเส้นแนวตั้งด้วย edge detection

sobelx = cv2.Sobel(gray,cv2.CV_8U,1,0,ksize=3)

6. ทำ threshold

ret2,threshold_img = cv2.threshold(sobelx,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

7. ปรับปรุงภาพ

element = cv2.getStructuringElement(shape=cv2.MORPH_RECT, ksize=(17, 3))
morph_img_threshold = threshold_img.copy()
cv2.morphologyEx(src=threshold_img, op=cv2.MORPH_CLOSE, kernel=element, dst=morph_img_threshold)

8. ทำการติดฉลากให้วัตถุ

contours, hierarchy= cv2.findContours(morph_img_threshold,mode=cv2.RETR_EXTERNAL,method=cv2.CHAIN_APPROX_NONE)

9. วนลูปในแต่ละวัตถุ

for i,cnt in enumerate(contours):
min_rect = cv2.minAreaRect(cnt)
#print(min_rect)
if validateRotationAndRatio(min_rect):

10. ตัดออกมาทีละวัตถุ

x,y,w,h = cv2.boundingRect(cnt)
p_img=img[y:y+h,x:x+w]
img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)

พอได้บริเวณเฉพาะตัวเลขมาแล้วนั้น

11. เอาบริเวณเฉพาะตัวเลขมาทำภาพเป็น gray scale

gray = cv2.cvtColor(p_img, cv2.COLOR_BGR2GRAY) #convert to grey scale

12. ทำ threshold

ret,thresh2 = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)

13. ทำการติดฉลากให้วัตถุ

# find contours, sort and draw the biggest one
contours, _ = cv2.findContours(thresh2, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

ทำการเลือกแค่ 3 วัตถุ
contours = sorted(contours, key=cv2.contourArea, reverse=True)[:3]

14. ตัดทีละตัวอักษรออกมา

i = 0
while i < len(contours):
x, y, width, height = cv2.boundingRect(contours[i])
roi = thresh2[y:y+height, x:x+width]
cv2.imwrite(“piece”+str(i)+”.png”, roi)
i += 1

ดึงแต่ละส่วนแล้วบันทึกลงคอมพิวเตอร์

หมายเหตุท้าย:
หากคุณชอบบทความนี้อย่าลืมคลิก❤ด้านล่างเพื่อแนะนำและถ้าคุณมีคำถามใด ๆ แสดงความคิดเห็นและฉันจะพยายามอย่างดีที่สุดที่จะตอบ คุณสามารถติดตามฉันบน facebook page (https://www.facebook.com/nextsoftwarehousethailand/) และสามารถส่งอีเมลถึงฉัน

--

--

Dr. Pathasu Doungmala
Dr. Pathasu Doungmala

Written by Dr. Pathasu Doungmala

Founder of Next Software — I am working on image processing, pattern recognition and AI to help reduce working in an industry.

No responses yet