给郝东写的条形码识别

本文介绍了使用Python和OpenCV进行条形码图像处理和数字识别的方法,包括代码实现、函数简要说明以及执行效果。通过自定义的矫正方法和互相关运算预测条形码上的数字,但在实际数据集上遇到一些挑战。
摘要由CSDN通过智能技术生成

用了一下午时间,清洗出了条形码图片中的数据

Python代码

环境:
opencv-python
numpy
matplotlib
pytorch (只是用来调试时绘图的,可以不用)

import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import time
import torch as tc
import torchvision as tv
from torch import nn, optim
from torchvision import transforms as T
from torch.nn import functional as F
from torchvision.utils import make_grid
from torch.utils.data import Dataset, DataLoader
from torch.nn import init
import xml.etree.ElementTree as ET
import cv2 as cv


def derv1d(ar):
    """一阶求导"""
    tmp = np.insert(ar, ar.size, 0)
    return tmp[1:] - ar


def get_projection(img, axis=1, kernel=(3, 200), drop_max=False, drop_min=False):
    """
    对图像进行投影,并返回分割位置
    
    axis: 在什么方向上投影
    kernel: 腐蚀核大小
    drop_max: 是否丢弃最大的图像(比如中心的条形码)
    drop_min: 是否丢弃最小的图像(比如某条无用的线)
    
    return: N个分割后的结果,即 [ N * clip-position ]
    """
    # 阈值化图像区域
    erode_kernel = np.ones(kernel)    
    erode_img = cv.erode(img, erode_kernel) # 腐蚀
    proj = erode_img.sum(axis=axis).astype(np.float)    # 投影
    proj = (proj - proj.mean()) / proj.std()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值