相关疑难解决方法(0)

OpenCV grabcut()背景颜色和Python中的轮廓

我正在使用Python和OpenCV.我现在grabcut()用来裁剪我想要的对象.这是我的代码:

img = cv2.imread('test.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
mask = np.zeros(img.shape[:2], np.uint8)

bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)

rect = (2,2,630,930)
cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT)

mask2 = np.where((mask==2)|(mask==0), 0,1).astype('uint8')
img = img*mask2[:,:, np.newaxis]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 在此输入图像描述

之后,我试着找出轮廓.

我试图通过下面的代码找到轮廓:

imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
im2, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
Run Code Online (Sandbox Code Playgroud)

并且它返回a contours array长度48.当我画出来的时候: 在此输入图像描述

第一个问题是如何获得这种抓斗的轮廓(阵列)?

在此输入图像描述 第二个问题:如您所见,背景颜色为黑色.如何将背景颜色更改为白色?

谢谢.

python opencv image image-processing

4
推荐指数
1
解决办法
6058
查看次数

改进 pytesseract 从图像中正确识别文本

我正在尝试使用pytesseract模块读取验证码。它大部分时间都提供准确的文本,但并非总是如此。

这是读取图像、操作图像和从图像中提取文本的代码。

import cv2
import numpy as np
import pytesseract

def read_captcha():
    # opencv loads the image in BGR, convert it to RGB
    img = cv2.cvtColor(cv2.imread('captcha.png'), cv2.COLOR_BGR2RGB)

    lower_white = np.array([200, 200, 200], dtype=np.uint8)
    upper_white = np.array([255, 255, 255], dtype=np.uint8)

    mask = cv2.inRange(img, lower_white, upper_white)  # could also use threshold
    mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)))  # "erase" the small white points in the resulting mask
    mask = cv2.bitwise_not(mask)  # invert mask

    # load background (could be an …
Run Code Online (Sandbox Code Playgroud)

python ocr opencv image-processing python-tesseract

2
推荐指数
1
解决办法
3020
查看次数

标签 统计

image-processing ×2

opencv ×2

python ×2

image ×1

ocr ×1

python-tesseract ×1