Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x canny检测后的填充文本_Python 3.x_Opencv_Ocr_Tesseract_Canny Operator - Fatal编程技术网

Python 3.x canny检测后的填充文本

Python 3.x canny检测后的填充文本,python-3.x,opencv,ocr,tesseract,canny-operator,Python 3.x,Opencv,Ocr,Tesseract,Canny Operator,现在我有一个包含一些文本的图像,它有一个彩色背景,我想使用tesseract提取它,但首先我想用白色背景替换彩色背景,并使文本本身变为黑色,以提高检测过程的准确性。 我试图使用精明的检测 import cv2 import numpy as np image=cv2.imread('tt.png') cv2.imshow('input image',image) cv2.waitKey(0) gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) edged

现在我有一个包含一些文本的图像,它有一个彩色背景,我想使用tesseract提取它,但首先我想用白色背景替换彩色背景,并使文本本身变为黑色,以提高检测过程的准确性。 我试图使用精明的检测

import cv2
import numpy as np

image=cv2.imread('tt.png')
cv2.imshow('input image',image)
cv2.waitKey(0)


gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
edged=cv2.Canny(gray,30,200)
edged = cv2.bitwise_not(edged)
cv2.imshow('canny edges',edged)
cv2.waitKey(0)
用白色替换彩色背景效果很好,但使文本的颜色为白色,而轮廓为黑色(查看下图)。 那么,有没有办法将整个文本涂成黑色? 或 我还有别的办法吗

编辑

图像可能有混合背景色,如

您只需使用
THRESH\u BINARY\u INV
即可,代码如下:

cv::namedWindow("Original_Image", cv::WINDOW_FREERATIO);
cv::namedWindow("Result", cv::WINDOW_FREERATIO);
cv::Mat originalImg = cv::imread("BCQqn.png");

cv::Mat gray;
cv::cvtColor(originalImg, gray, cv::COLOR_BGR2GRAY);
cv::threshold(gray, gray, 130, 255, cv::THRESH_BINARY_INV);

cv::imshow("Original_Image", originalImg);
cv::imshow("Result", gray);
cv::waitKey();
结果是:

您可以使用阈值(在上面的示例中为130)

<>注释:代码是C++的,如果你使用Python,那么你可以走相同的步骤,就是。
祝你好运

谢谢你的帮助,但我的图像有混合背景色(白色和蓝色),所以我想做一些通用的事情,可以将任何背景色的图像转换为白色,然后你应该提供更多的样本图像给其他人,以了解确切的情况。