we0091234 / crnn_plate_recognition

crnn chinese_plate_recognition
307 stars 61 forks source link

训练图片的宽度为啥是固定的? #14

Closed sunjunlishi closed 1 year ago

sunjunlishi commented 1 year ago

我很想用此代码来训练文本识别,文本的长度是不固定的。但是 我们训练和 ncnn中的识别代码,都是宽度是固定的168,对于车牌这种还可以。要是 文本变长的,我们应该怎么办啊,求教。

train.py parser.add_argument('--img_w',type=int,default=168,help='width')

脚本 OW: 280 # origial width: 280 H: 32 W: 100 # resized width: 160

sunjunlishi commented 1 year ago

特别是手写的样本,我们不能保证长度是固定的。每一行的长度是不固定的。

sunjunlishi commented 1 year ago

可以解决了呀。_360cc.py 可以更改宽度,哇。。。。。

img = cv2.resize(img, (0,0), fx=self.inp_w / img_w, fy=self.inp_h / img_h, interpolation=cv2.INTER_CUBIC)

    img = cv2.resize(img, (self.input_w,self.input_h))
sunjunlishi commented 1 year ago

def getitem(self, idx): 统一宽度,不够400,填充黑色; bk = np.ones(shape=[self.input_h,400,3], dtype=np.uint8)

bk = cv2.Mat(cv2.Size(400,self.input_h),cv2.CV_8UC3)

        dstw = (int)(img_w*self.input_h/img_h)

        img = cv2.resize(img, (dstw,self.input_h))
        bk[0:self.input_h,0:dstw] = img
        #roim = bk[0:dstw,0:self.input_h]           
        #roim = img
        cv2.imwrite("out1.jpg",img)
        img = bk
        cv2.imwrite("out.jpg",img)