1,970 Views
Sinopsis
Pengolahan citra digital untuk pada operasi morflogi sangat dibutuhkan sebagai alat bantu pengenalan sebuah pola, misalkan pada mesin OCR (optical character recognition) terutama untuk mengenal karakater/simbol huruf kecil/ huruf kanji/ ataupun huruf dengan simbol yang secara umum 1 huruf terdiri dari 1 objek, misalkan saja huruf kanji/huruf arab yang setiap hurufnya terkadang dibuat beberapa simbol. Operasi ini melibatkan operasi blob, kalian bisa baca link berikut http://www.softscients.web.id/2016/09/mengenal-contour-retrieval-mode.html. Berikut gambar yang akan digunakan yang merupakan sebuah simbol yang utuh, bila kalian perhatikan ada 2 objek yang tidak saling terhubung. Bila kalian menggunakan operasi Blob, maka akan ada 2 objek yang dikenali (bukan 1 objek)
Bila dibuat negasi image nya, akan tampil seperti berikut
Kalian bisa melihat akan terdeteksi menjadi satu objek secara utuh.
Kalian bisa menggunakan kode seperti berikut:
import cv2
import numpy as np
from matplotlib import pyplot as plt
plt.close('all')
img = cv2.imread('D:/5. Project/python-intersection/gambar.png', cv2.IMREAD_GRAYSCALE);
img2 = img.copy()
img3 = img.copy()
cv2.bitwise_not(img,img2)
cv2.bitwise_not(img,img3)
plt.figure()
plt.imshow(img2,cmap='gray')
font = cv2.FONT_HERSHEY_SIMPLEX
ret,thresh = cv2.threshold(img2,127,255,0)
image, contours, _ = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
##################################
#DIGABUNGKAN VIA RECTANGLE
##################################
for contour in contours:
[x,y,w,h] = cv2.boundingRect(contour)
if w > 10 and h>10:
cv2.rectangle(img2,(x,y),(x+w,y+h),(255,255,0),2)
plt.figure()
plt.imshow(img2,cmap='gray')
##################################
#HASIL AKHIR
##################################
image, contours, _ = cv2.findContours(img2,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
[x,y,w,h] = cv2.boundingRect(contour)
if w > 10 and h>10:
cv2.rectangle(img3,(x,y),(x+w,y+h),(255,255,0),2)
plt.figure()
plt.imshow(img3,cmap='gray')
plt.show()
ref:


