from qgis.core import *
import qgis.utils

layer = qgis.utils.iface.mapCanvas().currentLayer()
iter = layer.getFeatures()

crs = layer.crs().toWkt()

out_name = layer.name() + '_centerpoints'
vl = QgsVectorLayer("Point?crs=" + crs, out_name, "memory")
pr = vl.dataProvider()

fet = QgsFeature()

fields = layer.dataProvider().fields().toList()
new_attr = []

for feature in iter:
    geom = feature.geometry()
    attr = feature.attributes()

    for attrib in fields:
        new_attr.append(QgsField(attrib.name(),attrib.type()))
    pr.addAttributes(new_attr)
    vl.updateFields()

    length = geom.length()
    mid = geom.interpolate(length/2)
    fet.setGeometry(mid)
    fet.setAttributes(attr)
    pr.addFeatures([fet])    

vl.commitChanges()

QgsMapLayerRegistry.instance().addMapLayer(vl)