Blender 2.79b.
Simple script should return indices of camera-oriented faces.
Mesh has two rather similiar directed faces, but code returns only one:
import bpy
import bmesh
import numpy
scene = bpy.context.scene
cam_mat = scene.camera.matrix_world
cam_dir = [e[2] for e in cam_mat][:-1]
bm = bmesh.new()
bm.from_object(bpy.context.active_object, scene, deform=False)
id = [f.index for f in bm.faces if numpy.dot(f.normal, cam_dir)>0]
print(id)
Default backface culling works fine though.