如何向OpenCV / numpy图像添加自定义元数据?

时间:2012-03-21 16:08:04

标签: python image-processing opencv numpy python-2.7

我有一个问题。

我正在对OpenCV中的一些捕获图像执行一系列操作(调整大小,复制等),但我想为这些图像设置一些特定的元数据(属性名称也应该由我定义)在那些操作中存活并且可以在以后提取。我没有设置分辨率值或在这些操作后更改的任何其他值。我怎样才能做到这一点?我听说过pyexiv2,但我从未见过任何涉及OpenCV的例子。

提前致谢!

1 个答案:

答案 0 :(得分:3)

所以,最终,您可以直接使用自己的python类后面的2个文件内容(数据和元数据):

import cv 
import pyexiv2

class MyImage():

  _filename = None
  _data = None
  _metadata = None

  def __init__(self,fname):

    _filename = fname
    _data = cv.LoadImage(_filename)
    _metadata = pyexiv2.ImageMetadata(_filename)
    _metadata.read()

  def addMeta(self,key,value):
    _metadata[key] = pyexiv2.ExifTag(key, value)

  def delMeta(self,delkey):
    newdict = {key: value for key, value in some_dict.items()
                if value is not delkey}

  def resize(self,newx,newy):
    tmpimage = cv.CreateMat(newy, newx, cv.CV_8UC3)
    cv.Resize(_data,tmpimage)
    _data = tmpimage
    try: # Set metadata tags to new size if exist!
      _metadata['Exif.Image.XResolution'] = newx
      _metadata['Exif.Image.YResolution'] = newy
    except:
      pass

  def save(self):
    cv.SaveImage(_filename,_data) 
    _metadata.write()