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 OpenCV 2.4查找连接的组件_Python_Opencv_Ocr - Fatal编程技术网

Python OpenCV 2.4查找连接的组件

Python OpenCV 2.4查找连接的组件,python,opencv,ocr,Python,Opencv,Ocr,我正在尝试实现一个OCR应用程序。我想找到一组单词,然后为每个单词找到每个字符的轮廓。我已经找到了每个单词的轮廓,但是我在显示每个字符的轮廓时遇到了困难。到目前为止,我的代码是: imgInput = cv2.imread("inputImage.jpg") # convert image to grayscale imgGray = cv2.cvtColor(imgInput, cv2.COLOR_BGR2GRAY) # invert black

我正在尝试实现一个OCR应用程序。我想找到一组单词,然后为每个单词找到每个字符的轮廓。我已经找到了每个单词的轮廓,但是我在显示每个字符的轮廓时遇到了困难。到目前为止,我的代码是:

imgInput = cv2.imread("inputImage.jpg")            

# convert image to grayscale
imgGray = cv2.cvtColor(imgInput, cv2.COLOR_BGR2GRAY)         

# invert black and white
newRet, binaryThreshold = cv2.threshold(imgGray,127,255,cv2.THRESH_BINARY_INV)

# dilation
rectkernel = cv2.getStructuringElement(cv2.MORPH_RECT,(15,10))

rectdilation = cv2.dilate(binaryThreshold, rectkernel, iterations = 1)

outputImage = imgInput.copy()

npaContours, npaHierarchy = cv2.findContours(rectdilation.copy(),        
                                             cv2.RETR_EXTERNAL,                 
                                             cv2.CHAIN_APPROX_SIMPLE)           

for npaContour in npaContours:                         
    if cv2.contourArea(npaContour) > MIN_CONTOUR_AREA:          

        [intX, intY, intW, intH] = cv2.boundingRect(npaContour)         

        cv2.rectangle(outputImage,           
              (intX, intY),                 # upper left corner
              (intX+intW,intY+intH),        # lower right corner
              (0, 0, 255),                  # red
              2)                            # thickness

        # Get subimage of word and find contours of that word
        imgROI = binaryThreshold[intY:intY+intH, intX:intX+intW]   


        subContours, subHierarchy = cv2.findContours(imgROI.copy(),        
                                             cv2.RETR_EXTERNAL,                 
                                             cv2.CHAIN_APPROX_SIMPLE) 

        # This part is not working as I am expecting
        for subContour in subContours:

            [pointX, pointY, width, height] = cv2.boundingRect(subContour) 

            cv2.rectangle(outputImage,
                         (intX+pointX, intY+pointY),            
                         (intX+width, intY+height),       
                         (0, 255, 0),
                         2)



cv2.imshow("original", imgInput)
cv2.imshow("rectdilation", rectdilation)
cv2.imshow("threshold", binaryThreshold)
cv2.imshow("outputRect", outputImage)

cv2.waitKey(0);


一切正常,只是有一个小错误: 更改您的第二个cv2.2矩形(在分包中)

不要吝啬或小气,但这是一个你可以自己解决的bug;) 这类代码的调试只尝试第一个字,然后是第一个子圈,保存图像,检查pointX、intX、width的值。。。没什么太复杂的,这是作为一个程序员经常需要做的事情

祝你好运

cv2.rectangle(outputImage,(intX+pointX, intY+pointY),(intX+pointX+width, intY+pointY+height), (0, 255, 0),2)