Differential Evolution (DE), as a powerful population-based stochastic optimization algorithm, has attracted the attention of researchers from various fields due to its advantages such as simple operation, strong robustness, and few control parameters. However, many existing DE variants often suffer from drawbacks such as premature convergence and stagnation when solving complicated optimization problems. In view of the aforementioned issues, this paper proposes an adaptive DE with opposition learning-based diversity enhancement (OLBADE). The main contributions can be summarized as follows: Firstly, a new adaptive parameter control is proposed with a non-linear weighting strategy incorporating into the framework of parameter adaptation. Secondly, a donor vector perturbation strategy is introduced to complement existing strategy for increasing population diversity. Thirdly, a novel stagnation indicator is proposed, and then opposition learning strategy is employed to renew stagnated individuals in the population when stagnation occurs. OLBADE is compared with five excellent DE variants under a large test-bed containing CEC2013, CEC2014, CEC2017 and CEC2022 test suites to verify its effectiveness. In addition, OLBADE is applied in parameter identification problem of photovoltaic model to verify its feasibility. Experimental results demonstrate that OLBADE achieves higher solution accuracy, faster convergence speed and better stability.