Проблемы с настройкой экспозиции/усиления с помощью Emgu.CV (или OpenCV) с помощью Scientific Camer ⇐ C#
Проблемы с настройкой экспозиции/усиления с помощью Emgu.CV (или OpenCV) с помощью Scientific Camer
ОС: Windows 2008 R2
Модель камеры: камера Sony IMX, 20 МП
Версия Emgu.CV: 3.1.0.1
Версия .NET Framework: 4.7.2
Я столкнулся с проблемой: после изменения экспозиции камеры nncam с использованием их документации все полученные кадры не обновляются после использования кнопки захвата с использованием кадра запроса Emgu.CV. Мне нужна возможность регулировать экспозицию и усиление, потому что приложение, для которого я это использую, использует возможность регулировки экспозиции вручную.
Вот соответствующий код:
private void SetExposureFromTextbox() { если (cam_ == ноль) { MessageBox.Show("Камера не инициализирована."); возвращаться; } uint newExposure; если (uint.TryParse(exposureTextBox.Text, out newExposure)) { cam_.put_ExpoTime(newExposure); } еще { MessageBox.Show("Неверное значение риска."); } } частная пустота GrabAndDisplayFrame() { используя (Matframe = capture.QueryFrame()) { если (кадр!= ноль) { PictureBox1.Image = Frame.ToImage().Bitmap; //Получаем значение экспозиции с камеры uint обновленныйCameraExposure; cam_.get_ExpoTime (из обновленногоCameraExposure); currentExposureTextBox.Text = updateCameraExposure.ToString(); } } } частный void capture_push_Click (отправитель объекта, EventArgs e) { // Удалить текущий объект захвата если (захват!= ноль) { захват.Dispose(); захват = ноль; } // Создаем новый объект захвата захват = новый захват (0); // nncam — камера по умолчанию. УстановитьЭкспозициюИзТекстбокса(); GrabAndDisplayFrame(); } Я что-то упустил? Нельзя ли использовать Emgu.CV в качестве «FrameGrabber» и использовать встроенные элементы управления экспозицией/усилением камеры (в данном случае cam_.get_ExpoTime)?
Я отрегулировал время экспозиции с помощью элементов управления камерой, ожидая, что кадры будут отражать новые настройки экспозиции. Однако, хотя камера подтвердила изменение экспозиции, изображение, отображаемое в окне изображения, осталось неизменным. Я также отключил свойство автоэкспозиции камеры во время инициализации.
private void InitializeCamera() { Nncam.DeviceV2[] arr = Nncam.EnumV2(); если (Длина массива > 0) { cam_ = Nncam.Open(arr[0].id); // Назначаем объект камеры полю cam_ // Отключаем автоэкспозицию cam_.put_AutoExpoEnable(ложь); // Устанавливаем экспозицию и усиление cam_.put_ExpoTime(1001); } еще { MessageBox.Show("Камера Nncam не найдена."); } // Инициализируем захват Emgu.CV захват = новый захват (0); // Предполагаем, что камера Nncam является камерой по умолчанию }
ОС: Windows 2008 R2
Модель камеры: камера Sony IMX, 20 МП
Версия Emgu.CV: 3.1.0.1
Версия .NET Framework: 4.7.2
Я столкнулся с проблемой: после изменения экспозиции камеры nncam с использованием их документации все полученные кадры не обновляются после использования кнопки захвата с использованием кадра запроса Emgu.CV. Мне нужна возможность регулировать экспозицию и усиление, потому что приложение, для которого я это использую, использует возможность регулировки экспозиции вручную.
Вот соответствующий код:
private void SetExposureFromTextbox() { если (cam_ == ноль) { MessageBox.Show("Камера не инициализирована."); возвращаться; } uint newExposure; если (uint.TryParse(exposureTextBox.Text, out newExposure)) { cam_.put_ExpoTime(newExposure); } еще { MessageBox.Show("Неверное значение риска."); } } частная пустота GrabAndDisplayFrame() { используя (Matframe = capture.QueryFrame()) { если (кадр!= ноль) { PictureBox1.Image = Frame.ToImage().Bitmap; //Получаем значение экспозиции с камеры uint обновленныйCameraExposure; cam_.get_ExpoTime (из обновленногоCameraExposure); currentExposureTextBox.Text = updateCameraExposure.ToString(); } } } частный void capture_push_Click (отправитель объекта, EventArgs e) { // Удалить текущий объект захвата если (захват!= ноль) { захват.Dispose(); захват = ноль; } // Создаем новый объект захвата захват = новый захват (0); // nncam — камера по умолчанию. УстановитьЭкспозициюИзТекстбокса(); GrabAndDisplayFrame(); } Я что-то упустил? Нельзя ли использовать Emgu.CV в качестве «FrameGrabber» и использовать встроенные элементы управления экспозицией/усилением камеры (в данном случае cam_.get_ExpoTime)?
Я отрегулировал время экспозиции с помощью элементов управления камерой, ожидая, что кадры будут отражать новые настройки экспозиции. Однако, хотя камера подтвердила изменение экспозиции, изображение, отображаемое в окне изображения, осталось неизменным. Я также отключил свойство автоэкспозиции камеры во время инициализации.
private void InitializeCamera() { Nncam.DeviceV2[] arr = Nncam.EnumV2(); если (Длина массива > 0) { cam_ = Nncam.Open(arr[0].id); // Назначаем объект камеры полю cam_ // Отключаем автоэкспозицию cam_.put_AutoExpoEnable(ложь); // Устанавливаем экспозицию и усиление cam_.put_ExpoTime(1001); } еще { MessageBox.Show("Камера Nncam не найдена."); } // Инициализируем захват Emgu.CV захват = новый захват (0); // Предполагаем, что камера Nncam является камерой по умолчанию }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как реализовать настройку экспозиции, например Adobe Lightroom, с помощью OpenCV?
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как реализовать настройку экспозиции, например Adobe Lightroom, с помощью OpenCV?
Anonymous » » в форуме Python - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-