2012-12-14 24 views
16

Giả sử bạn có hình ảnh sau: Example:Extract hộp bounding và lưu nó như một hình ảnh

Bây giờ tôi muốn trích xuất hình ảnh cá nhân mỗi người trong số các chữ cái độc lập, cho nhiệm vụ này tôi đã khôi phục những đường nét và sau đó drawed một hộp bounding, trong trường hợp này cho nhân vật 'a':

Bounding box for the character 'a'

Sau này, tôi muốn trích xuất mỗi hộp (trong trường hợp này cho chữ 'a') và lưu nó vào một tệp hình ảnh.

kết quả mong đợi: Result

Dưới đây là mã của tôi cho đến nay:

import numpy as np 
import cv2 

im = cv2.imread('abcd.png') 
im[im == 255] = 1 
im[im == 0] = 255 
im[im == 1] = 0 
im2 = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) 
ret,thresh = cv2.threshold(im2,127,255,0) 
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 

for i in range(0, len(contours)): 
    if (i % 2 == 0): 
     cnt = contours[i] 
     #mask = np.zeros(im2.shape,np.uint8) 
     #cv2.drawContours(mask,[cnt],0,255,-1) 
     x,y,w,h = cv2.boundingRect(cnt) 
     cv2.rectangle(im,(x,y),(x+w,y+h),(0,255,0),2) 
     cv2.imshow('Features', im) 
     cv2.imwrite(str(i)+'.png', im) 

cv2.destroyAllWindows() 

Cảm ơn trước.

Trả lời

22

Sau đây sẽ cung cấp cho bạn một chữ cái

letter = im[y:y+h,x:x+w] 
+0

Khi tôi cắt mảng, nó được các chỉ số sai, ví dụ: Bức thư 'a' di chuyển, vì vậy tôi nhận được chỉ góc lên bên phải và với những người khác tôi nhận được lỗi này: cảnh báo libpng: Chiều cao hình ảnh bằng 0 trong IHDR lỗi libpng: Dữ liệu IHDR không hợp lệ –

+0

Tôi đã tìm thấy điều gì sai, kích thước được đảo ngược, ví dụ: im [y: y + h, x : x + w] –

+0

Làm cách nào để giải pháp này có thể được sửa đổi để đặt các hộp giới hạn màu xanh lục trên hình ảnh gốc? – DeaconDesperado

Các vấn đề liên quan