1
試圖通過將座標列表保存到數組中裁剪我的圖像後,裁剪區域中的字母變得非常模糊,我找不到原因。在裁剪功能後字母模糊/模糊
原始圖像看起來像
後裁剪圖像看起來像
在問題的代碼如下:
import numpy as np
import cv2
im2 = cv2.imread('1.jpg')
im = im2.copy()
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray,(5,5),0)
thresh = cv2.adaptiveThreshold(blur,255,1,1,11,2)
contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
squares = []
for cnt in contours:
if cv2.contourArea(cnt)>50:
[x,y,w,h] = cv2.boundingRect(cnt)
if h>28 and h<34:
rect = (cv2.rectangle(im,(x,y),(x+w,y+h),(255,255,255),3))
squares.append(cv2.boundingRect(cnt))
cv2.imwrite('norm1.jpg',im)
crop_img = [[[255, 255, 255] for x in xrange(377)] for x in xrange(377) ]
for s in squares:
x = s[0]
y = s[1]
w = s[2]
h = s[3]
img = im[y:y+h,x:x+w]
for col in range(y,y+h):
for row in range(x,x+w):
if img[col - y][row - x].tolist() == [0,0,0]:
crop_img[col][row] = [0,0,0]
cv2.imwrite("cropped.jpg", np.array(crop_img))
任何幫助WOU ld將不勝感激!
在您的代碼,其是可變的第一和哪個變量是第二。另外我不確定,但請檢查您的數據類型是否在某處發生了更改。 –
嗨,阿比德。我不知道你是什麼意思的「第一和第二」,但我知道我的數據類型是改變了行「if img [col - y] [row - x] .tolist()== [0,0, 0]:「我不得不使用.tolist函數,因爲它拋出了錯誤:ValueError:具有多個元素的數組的真值是不明確的。使用a.any()或a.all()。 我希望這可以清除一些。謝謝! – JamesLLee
噢......我很抱歉,我想問「在你的代碼中,哪個變量是你的問題中的第一個圖像,哪個變量是第二個圖像」。 –