在openCV中,如何从python中openCV_createsamples生成的矢量文件中加载图像?

2024-06-11 20:06:22 发布

您现在位置:Python中文网/ 问答频道 /正文

脚本opencv_createsamples创建.vec文件,该文件保存训练级联所需的所有图像。在

我想知道是否有一种方法可以将图像直接从该文件加载到python脚本中。在

谢谢。在


Tags: 文件方法图像脚本opencv级联veccreatesamples
1条回答
网友
1楼 · 发布于 2024-06-11 20:06:22

这个python代码片段显示了从.vec文件中提取图像。函数可以用showvec('xxx.vec公司'). 只有当vec文件中的图像具有其他标准尺寸时,才能设置宽度和高度参数。(24 x 24)resize参数可以调整图像的大小以获得更好的效果看。什么时候调用这个函数一个窗口将显示一个接一个的图像时,按一个键。esc键将断开循环。它演示了使用python从.vec文件中提取图像是多么容易。在

import struct,array

import cv2
import numpy as np

def showvec(fn, width=24, height=24, resize=4.0):
  f = open(fn,'rb')
  HEADERTYP = '<iihh' # img count, img size, min, max

  # read header
  imgcount,imgsize,_,_ = struct.unpack(HEADERTYP, f.read(12))

  for i in range(imgcount):
    img  = np.zeros((height,width),np.uint8)

    f.read(1) # read gap byte

    data = array.array('h')

    ###  buf = f.read(imgsize*2)
    ###  data.fromstring(buf)

    data.fromfile(f,imgsize)

    for r in range(height):
      for c in range(width):
        img[r,c] = data[r * width + c]

    img = cv2.resize(img, (0,0), fx=resize, fy=resize, interpolation=cv2.INTER_LINEAR)
    cv2.imshow('vec_img',img)
    k = 0xFF & cv2.waitKey(0)
    if k == 27:         # esc to exit
      break

相关问题 更多 >