Кажется, вы делаете это правильно, но Известно, что OpenCV имеет проблемы с такими вещами . Вы уверены, что ваша камера поддерживает 160x140? Сыр говорит, что моя камера поддерживает 160x120 , но когда я выбираю этот формат, кажется, ничего не меняется.
Одна вещь, хотя лучше всегда проверять возврат вызовов OpenCV, например:
CvCapture *camera = cvCreateCameraCapture(1);
if (!camera)
{
// print error and exit
}
Одна вещь, которую вы можете сделать, это изменить размер захваченного кадра до нужного разрешения. Это не идеально, я знаю, ваш процессор будет выполнять эту задачу, и, следовательно, для вашего приложения будут некоторые затраты производительности, но если вам нужно, чтобы изображение было определенного размера, а OpenCV проигрывался не очень хорошо, то не так уж много вы можете сделать, если вы не готовы сделать операцию на OpenCV.
EDIT:
Одна вещь, которую вы должны сделать, это проверить, действительно ли были установлены эти значения. Итак, после их установки, получите их с помощью cvGetCaptureProperty()
.