2022-12-28 17:25

通过OpenCV和CnOcr识别图片背景

码自答

Python

(1036)

(0)

收藏

  • 通过OpenCV打开图片

    image = cv2.imread("c:/test/2.jpg");

  • 灰度处理

    OpenCV是基于灰度图像进行处理的

    gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY);

    image.png

    经过灰度处理之后的图片,没有彩色

  • 中值滤波,模糊处理

    为了减少图片上的噪点,将某点的灰度值用一个邻域内所有灰度值的中间值代替

    blur = cv2.medianBlur(gray,7);

    整数的取值从1~7,数字越大,越模糊

    image.png

  • 二值处理

    图片上只有两种颜色,黑和白,区分背景

    原来黑色变白,其他颜色都卫黑色

    threshold = cv2.threshold(blur,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)[1];

    image.png

  • 边缘检测

    检测图像的边缘

    canny = cv2.Canny(threshold,100,150);

    image.png

  • 边缘膨胀

    保持原有形状,使边缘更加连贯 白色的边缘更粗

    kernel = np.ones((3,3),np.uint8);

    创建3行3列的二维数组,每个元素的值都是1

    dilate = cv2.dilate(canny,kernel,iterations=5)

    iterations表示的使膨胀次数

    image.png

  • 轮廓检测

    查找图片的位置

    binary.contours.hinerarchy = cv2.findContours(dilate,cv2.RETR_EXTERNAL,cv2.CHATN_APPROX_SIMPLE)

    contours就是查找的轮廓

    image.png

  • 图像截取

    去掉背景之后的图像

        resize = cv2.resize(dilate,(1084,669),interpolation=cv2.INTER_AREA);

    1084,669是调整之后的图像大小

    image.png

0条评论

点击登录参与评论