I did some more digging, seems like a virtual package is to blame.
libopencv-dev depends on libopencv-ocl-dev libopencv-ocl-dev depends on libopencv-ocl2.4
libopencv-ocl2.4 on the virtual package libopencl1, provided by nvidia-304, nvidia-304-updates, nvidia-319, nvidia-319-updates, ocl-icd-libopencl1
apt decided to use nvidia-319-updates, which broke the system.
To fix this I removed all nvidia packages, along with libopencv-dev. Then installed ocl-icd-libopencl1, then libopencv-dev. Now all is good.
In my opinion ocl-icd-libopencl1 should be chosen by default.
I did some more digging, seems like a virtual package is to blame.
libopencv-dev depends on libopencv-ocl-dev
libopencv-ocl-dev depends on libopencv-ocl2.4
libopencv-ocl2.4 on the virtual package libopencl1, provided by nvidia-304, nvidia-304-updates, nvidia-319, nvidia-319-updates, ocl-icd-libopencl1
apt decided to use nvidia-319-updates, which broke the system.
To fix this I removed all nvidia packages, along with libopencv-dev. Then installed ocl-icd-libopencl1, then libopencv-dev. Now all is good.
In my opinion ocl-icd-libopencl1 should be chosen by default.