Member 8973214 Ответов: 3

aforge.net. в классе VideoCaptureDevice свойство DesiredFrameSize не работает для меня.


Привет Друзья
класс VideoCaptureDevice, свойство DesiredFrameSize не работает для меня, скажите мне, где ошибка в (1)? так же, как и (1) проблема, я также хочу установить пользовательское свойство DesiredFrameRate.
(1):
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice );
VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString );
videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame );
//
selectedCamera.DesiredFrameSize = new Size(200, 200); //no any result
//
videoSource.Start( );

private void video_NewFrame( object sender,
        NewFrameEventArgs eventArgs )
{
   MessageBox.Show(eventArgs.Frame.Size.ToString());  //message box shows (640,480) not as configred       
 //...
}

(2)он работает нормально, но я хочу использовать DesiredFrameSize, как в (1).
я также попробовал следующее, И это прекрасно работает на раме.
public static ResizeNearestNeighbor size = new ResizeNearestNeighbor(200,200);
//
Bitmap bitmap = size.Apply( eventArgs.Frame);
   MessageBox.Show(bitmap.Size.ToString());  //working fine
//..

3 Ответов

Рейтинг:
26

Sergey Alexandrovich Kryukov

Я никогда не пробовал AForge.NET DesiredFrameSize- но я не думаю , что он может установить любой размер, который вы пожелаете. Камеры обычно имеют некоторый набор предопределенных режимов, а некоторые режимы имеют разный размер кадра. Если ваш запрошенный размер поддерживается одним из доступных режимов, он будет работать, если нет — не будет.

—СА


Member 8973214

Превосходный. :-)
да, это правда. спасибо. теперь я попробовал стандартное соотношение размеров (320,240) и (1280 , 720) и т. д., которое на 100% работало с свойством DesiredFrameSize. и снова ***** для тебя.:)

Sergey Alexandrovich Kryukov

"*****"... Хорошо, что это не четырехзвездочное слово. :-)

Мы всегда рады вам.
Удачи, звоните еще раз.

—СА

Member 8973214

да уж пять стартов ;-).
Конечно..

Sergey Alexandrovich Kryukov

:-)

Member 8973214

Привет SA, я хочу зарегистрировать сочетание клавиш с кодом для запуска моего приложения, которое разрабатывается на C#. (например: как "Ctrl+Alt+Del" является наиболее популярным). Я не смог найти ничего похожего.

Sergey Alexandrovich Kryukov

Ctrl+Alt+Del зарезервированы ОС. Вы даже не можете поймать его. ОС "скрывает" это конкретное событие для этой конкретной последовательности событий (нажмите на Del, удерживая Ctrl+Alt), потому что если пользователь каким-то образом взломает его на уровне приложения, это поставит под угрозу стабильность системы. Просто подумай об этом. Ладно, похоже, это отдельный вопрос. Если у вас все еще есть какие-то проблемы, сформулируйте, чего именно вы хотите достичь и почему (не забудьте объяснить свои конечные цели), и задайте новый вопрос.

Если вы хотите, чтобы я обратил на это внимание. Оставьте мне комментарий, ответив на этот комментарий, дайте ссылку...
—СА

Member 8973214

Да, следующая ссылка показывает, как создать сочетание клавиш в windows, чтобы открыть приложение.
(http://windows.microsoft.com/en-ph/windows7/create-keyboard-shortcuts-to-open-programs).
но я хочу сделать это с помощью кода C#.

Sergey Alexandrovich Kryukov

Но это не так. На самом деле он не объясняет, как создавать такие ярлыки.
—СА

Member 8973214

Я просто хочу сделать свое приложение более доступным.

Sergey Alexandrovich Kryukov

Я могу это понять, но, пожалуйста, подумайте: 1) не будет ли это слишком навязчиво для многих людей? разве многие не предпочтут сами позаботиться о доступе к приложению? это действительно имеет смысл, но только для ограниченного числа часто используемых приложений; 2) готовы ли вы выполнить относительно большую работу за сомнительную выгоду? Я постараюсь ответить, но смотрите сами...
—СА

Member 8973214

Да, это так, но это было только в моем уме, поэтому я хотел попробовать это.

Sergey Alexandrovich Kryukov

Я ответил на вопрос о кратчайших путях, хотя это и не связанный с ним вопрос. В следующий раз задавайте в таких случаях отдельный вопрос.
—СА

Member 8973214

Хорошо СА спасибо

Member 8973214

Привет, СА , вот еще один вопрос.
http://www.codeproject.com/Questions/600925/ManageplusoutputplusFoldersplus-Debug-2frelease

Sergey Alexandrovich Kryukov

ОК. Я просто ответил.
—СА

Member 13785296

как это сделать, у меня тоже такая проблема. можете ли вы помочь мне, покажите мне u r 100% рабочий код, пожалуйста, :(

videoDevices = новая коллекция FilterInfoCollection(FilterCategory.VideoInputDevice );
VideoCaptureDevice videoSource = новое VideoCaptureDevice(videoDevices[0].Monikerstr );
видеоисточник.Вызов newframe += новый NewFrameEventHandler( video_NewFrame );
видеоисточник.DesiredFrameSize = новый размер(1920, 1080); //нет никакого результата
видеоисточник.Начать( );

это не работа, как это сделать-это работа.

Рейтинг:
17

Sergey Alexandrovich Kryukov

Член 8973214 написал:
Да, следующая ссылка показывает, как создать сочетание клавиш в windows, чтобы открыть приложение [какая — то нерелевантная ссылка, удалена-SA], но я хочу сделать это с помощью кода C#.
Пожалуйста, смотрите мой последний комментарий к решению 1.

Вы можете сделать это одним из двух способов: 1) Вы можете заставить некоторые приложения слушать некоторые глобальные сочетания клавиш и активировать себя; помните, что приложение не может запустить себя; также помните, что приложения определяют ярлыки независимо, поэтому различные приложения могут конфликтовать; 2) вы можете иметь отдельное приложение "менеджер" и зарегистрировать некоторые приложения для запуска или активации.

Первое, что вам нужно понять, это то, что вы спрашиваете о "ярлыках", которые не имеют ничего общего с обычными ярлыками, используемыми внутри каждого приложения. Если вы выполните поиск в Интернете, почти все результаты поиска будут касаться этих "обычных" ярлыков, а не тех, о которых вы спрашиваете.

В обоих случаях вам нужно будет использовать Крючки Для Окон: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632589%28v=vs.85%29.aspx[^].

Более того, в обоих случаях вам нужно сделать свои крючки система-глобальная. Согласно документации Microsoft, для этого потребуется крючок, установленный в некоторых родной файл DLL. Это означает, что вы не можете сделать это полностью в C#. Вы можете иметь только основное приложение в C#, но это должно загрузить собственную библиотеку DLL и использовать ее для установки крючка. Более того, крючок никогда не захватывает в одну и ту же нить. Вам нужно будет использовать какой-то потоконезависимый способ связи между обработчиком крючка и приложением, возможно, используя IPC (http://en.wikipedia.org/wiki/Inter-process_communication[^]).

Есть основная идея? Чем пытаться его реализовать, но предупреждаю: это будет довольно большая работа, а функциональность крючка довольно трудно отладить. В то же время я почти уверен, что есть доступные приложения, которые делают почти то же самое. Итак, вопрос: стоит ли оно того? :-)

—СА


Member 8973214

Хммммм :-) У меня есть идея, и это выглядит сложной работой, потому что сейчас я оставляю ее и попробую в свободное время. Но спасибо, что уделили мне время. :-)

Sergey Alexandrovich Kryukov

Мы всегда рады вам.
Удачи,
—СА

Member 13785296

частный недействительными методе form1_load(объект отправителя, EventArgs в электронной)
{
videoDevices = новая коллекция FilterInfoCollection(FilterCategory.VideoInputDevice);
VideoCaptureDevice videoSource = newVideoCaptureDevice(videoDevices[0].Monikerstr);
видеоисточник.Вызов newframe += новый NewFrameEventHandler(video_NewFrame);
//видеоисточник.VideoResolution = видеоисточник.Видео возможности[0];
видеоисточник.DesiredFrameSize = новый размер(752, 582); //нет никакого результата
//
видеоисточник.Начать();
}


частная video_NewFrame недействительным( объект отправителя, EventArgs в NewFrameEventArgs )
{
video = (Bitmap)eventArgs.Рамка.Клон();
Cam1 в.Изображение = (изображение)EventArgs в.Рамка.Клон();
// MessageBox.Шоу(eventArgs.Рамка,Размер.Метод toString());

}


любая помощь... как сделать изменение разрешения.
этот код используется любой камерой, может использовать разрешение 640x480.
я хочу использовать разрешение 1920x1080,

Рейтинг:
1

Member 13785296

частный недействительными методе form1_load(объект отправителя, EventArgs в электронной)
{
videoDevices = новая коллекция FilterInfoCollection(FilterCategory.VideoInputDevice);
VideoCaptureDevice videoSource = newVideoCaptureDevice(videoDevices[0].Monikerstr);
видеоисточник.Вызов newframe += новый NewFrameEventHandler(video_NewFrame);
//видеоисточник.VideoResolution = видеоисточник.Видео возможности[0];
видеоисточник.DesiredFrameSize = новый размер(752, 582); //нет никакого результата
//
видеоисточник.Начать();
}


частная video_NewFrame недействительным( объект отправителя, EventArgs в NewFrameEventArgs )
{
video = (Bitmap)eventArgs.Рамка.Клон();
Cam1 в.Изображение = (изображение)EventArgs в.Рамка.Клон();
// MessageBox.Шоу(eventArgs.Рамка,Размер.Метод toString());

}


любая помощь... как сделать изменение разрешения.
этот код используется любой камерой, может использовать разрешение 640x480.
я хочу использовать разрешение 1920x1080,


Patrice T

Откройте свой собственный вопрос и удалите его