16
Giả sử bạn có hình ảnh sau: 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':
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:
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.
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ệ –
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] –
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