OOP is about the structure of your data and how your program can center itself around that structure by encapsulating all behaviors within the definition of the data itself ("a house has a door, a door can open if the door has a locked attribute set to false...")
FP is about the flow of your data and how your program can facilitate and follow that flow ("a house gets passed to the open door function and returns a house with an opened door").
OOP gets more interesting when you begin to associate structures of data/behavior with one another through inheritance and treat them generically via polymorphism.
FP gets more interesting when you begin to treat functions as data and transform them in the same ways that you transform the data... in fact, in most functional languages that distinction is at most ambiguous if not nonsensical. FP also relies heavily on the idea of lexical scope and "closures" which are snapshots of execution state, created when a new scope (such as a dynamic function) is created.
In reality, these techniques are usually co-existent to some extent.