在python中如何将灰色背景更改为白色背景?

2024-05-15 07:55:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用pyterreractocr识别屏幕上的一部分字符。它说,即使扫描一些字符,也无法检测到任何字符。我认为问题在于它的背景是灰色的,而我试图扫描/捕获的文本是黑色的。我认为灰色的背景会使它消失,所以我想把灰色改成白色,希望软件能正常工作。这是我的密码:

imghi = ImageGrab.grab(bbox = (x, y, x + offx, y + offy))                             
imgglo = np.array(imghi)                                                                  
gray = cv2.cvtColor(imgglo,cv2.COLOR_BGR2GRAY)                                            
gray2 = cv2.fastNlMeansDenoising(gray, None, 9, 13)                                         
th, threshed = cv2.threshold(gray2, 240, 255, cv2.THRESH_BINARY_INV)                         
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (11,11))                              
morphed = cv2.morphologyEx(threshed, cv2.MORPH_CLOSE, kernel)                          
Image_Inversed = cv2.bitwise_not(gray)                                                            
thresh = 0                                                                             
maxValue = 255                                                                                     
cv2.threshold(Image_Inversed,10,255,cv2.THRESH_BINARY_INV)                                       
img_final = np.array(Image_Inversed)                                                      
cv2.imshow('Mats Viewer', img_final)                                        
tess.pytesseract.tesseract_cmd = r'C:\Users\tyler\AppData\Local\Tesseract-  
OCR\tesseract.exe' text = tess.image_to_string(img_final)

如果您在理解上有困难,请发表评论。谢谢大家!


Tags: imageimgnp字符arraycv2final背景
1条回答
网友
1楼 · 发布于 2024-05-15 07:55:44

事实上,您的代码已经删除了灰色背景-它在th, threshed = cv2.threshold(gray2, 240, 255, cv2.THRESH_BINARY_INV)行中,它将颜色值低于240的所有像素设置为0(白色),将颜色值高于240的像素设置为255(黑色)

问题是,在进一步的处理过程中,您不使用已处理的图像(threshed),而是使用gray图像。这同样适用于您所做的其他转换——它们是执行的,但是您将结果分配给新的变量,以后不再使用这些变量。重要的是要理解,许多操作(我冒着风险说它通常是大多数python库和案例的默认操作)不会就地更改输入,而是返回一个新的对象,并应用一些更改

因此,简而言之,在处理图像的每一行中,都应该使用前一个操作的输出,而不是初始变量

相关问题 更多 >