简体   繁体   中英

Remove white space from an image using python

There are multiple images that have white spaces that I need to remove. Simply crop the image so as to get rid of the white spaces Here's the code I tried so far (this is a result of search)

 import numpy as np import cv2 img = cv2.imread('Sample.png') img = img[:-5,:-5] gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = 255*(gray < 128).astype(np.uint8) gray = cv2.morphologyEx(gray, cv2.MORPH_OPEN, np.ones((2, 2), dtype=np.uint8)) coords = cv2.findNonZero(gray) x, y, w, h = cv2.boundingRect(coords) rect = img[y:y+h, x:x+w] cv2.imshow("Cropped", rect) cv2.waitKey(0) cv2.destroyAllWindows() cv2.imwrite("Output.png", rect)

Here's the sample image

在此处输入图像描述

And this is the desired output

在此处输入图像描述

The code is almost perfect. It just can't crop on the right side because of the scrollbar. And it does not consider some padding (which you liked according the comments).

The thing I removed is the topology modification.

 import numpy as np import cv2 img = cv2.imread('cropwhitefromimage.png') scrollbarright = 20 img = img[:,:-scrollbarright] gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = 255*(gray < 128).astype(np.uint8) coords = cv2.findNonZero(gray) x, y, w, h = cv2.boundingRect(coords) padding = 10 rect = img[y-padding:y+h+padding, x-padding:x+w+padding] cv2.imshow("Cropped", rect) cv2.waitKey(0) cv2.destroyAllWindows() cv2.imwrite("cropwhitefromimage_result.png", rect)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM