Служба загрузки изображений windows wia

Служба загрузки изображений windows wia

Посетителей: 37195 | Просмотров: 42485 (сегодня 3) Шрифт:

Название службы: stisvc
Название процесса: svchost.exe
По умолчанию в Windows XP Home: Вручную
По умолчанию в Windows XP Pro: Вручную
Рекомендуемое значение: Вручную
Вход от имени: Локальная система

Какие сервисы нужны для нормального функционирования службы Служба загрузки изображений (WIA) (Windows Image Acquisition (WIA)):

Какие сервисы требуют работу службы Служба загрузки изображений (WIA) (Windows Image Acquisition (WIA)) для нормального функционирования:

Windows XP | Разместил: Cesar, 2012-01-21 | 42270 1

В Windows XP входит огромное количество служб, и многие из них запускаются по умолчанию при загрузке ОС. Каждая служба предназначена для определенных целей и порою, будучи активной, но совершенно бесполезной на определенном компьютере, она использует оперативную память и другие ресурсы, тем самым, ухудшая общее быстродействие Windows.

Чтобы произвести отключение лишних и не нужных служб зайдите в меню Пуск -> Панель управления -> Администрирование -> Службы (или введите команду services.msc в приложении «Выполнить»)

Теперь перед вами открыта панель управления службами Windows XP, для каждой из них, при расширенном режиме(как на скриншоте выше), слева будет появляться описание выполняемых функций.

Для редактирования конкретной службы нажмите по ней правой кнопкой мыши и выберите Свойства. Откроется окно с настройками, первая вкладка «Общие», здесь можно включить, перезапустить и отключить службу, а также определить тип запуска:
Авто — служба будет запускаться автоматически с загрузкой ОС.
Вручную — служба запускается по необходимости нажатием кнопки «Пуск» в этом же окне.
Отключено — данная служба не функционирует

После внесения изменений, обязательно подтвердите их кнопкой «Применить» и «ОК».

Внимание! Отключение некоторых служб может отрицательно повлиять на работу вашего компьютера, делайте это, будучи уверенным, на 100% в своей правоте. На каждой машине настройки могут разниться, т.к. все ПК выполняют разные задачи.

Далее предлагаю ознакомиться со списком служб, которые чаще всего можно отключить :

Machine Debug Manager — Понадобится только для разработчиков во время отладки программ. Можно отключить.

DHCP-клиент — Служит для обеспечения работы в сети, в которой есть DHCP сервер. При его отсутствии можно отключить.

Брандмауэр Windows/Общий доступ к Интернету (ICS) – отключаем при наличии сторонних антивирусов со встроенным фаерволом.

Беспроводная настройка – нужна для связи с ноутбуками и точками доступа, если их нет — можно отключить.

Вторичный вход в систему, Совместимость быстрого переключения пользователей — Если вы используете на своем компьютере одну единственную запись администратора, то их можно отключить.

Диспетчер очереди печати – Отправляет документы на печать. Нет принтера – нет и службе, отключаем.

Обозреватель компьютеров, Сервер, Сетевые подключения и Служба сетевого расположения (NLA) – при отсутствии сети все их можно отключить.

Служба COM записи компакт-дисков IMAPI – если вы не записываете информацию на компакт-диски, то можете отключить эту службу.

Служба загрузки изображений (WIA) – можно отключить, если вы не подключаете к компьютеру такие устройства как сканеры и фотокамеры.

Темы – эта служба стоит отдельного внимания. Если вы используете стили оформления Windows XP, то она должна быть включена, но на слабых системниках ее рекомендуется отключить. К сожалению, пропадет красивый интерфейс, но зато улучшится быстродействие.

Читайте также:  Насадка на шуруповёрт лобзик

Центр обеспечения безопасности — отключите, если вы уверены в безопасности своего ПК.

Telnet, QoS RSVP, Автоматическое обновление, Веб-клиент, Журналы и оповещения производительности, Клиент отслеживания изменившихся связей, Служба восстановления системы, Служба обнаружения SSDP, Смарт-карты, Удаленный реестр — можно отключить

А вот эти службы ни в коем случае отключать нельзя :

Удаленный вызов процедур (RPC) — Обеспечивает сопоставление конечных точек и иных служб RPC.

Plug and Play – Отвечает за распознавание изменение в установленном оборудовании, вмешательства пользователя должно быть сведено к минимуму.

После отключения ненужных вам служб, перезагрузите компьютер, чтобы изменения вступили в силу.

Задача поста — освежить информацию о работе с WIA в .NET, лежащую на просторах сети, т.к. большинство примеров безбожно устарели (они не работают), поделиться опытом с интересующимися и спросить совета у бывалых. Я думаю, совместно обсудить некоторые моменты, будет полезно для коллег, занимающихся подобными задачами. Постараюсь разжевать все моменты.

Мотив был таков: в программе, где хранится информация о людях есть их фотографии, но фотографии туда попадают сложным путем. Берем бумажный оригинал фото (их приносят люди вместе с документами), сканируем в файл, открываем в простом редакторе, кадрируем под 3х4см, сохраняем, в программе открываем анкету человека и там уже добавляем ему фото из готового файла.

Сейчас в программе несколько тысяч человек и стоит задача всех их сфотографировать красиво, потому что они приносят фотографии просто ужасного качества и с разным процентом заполнения лица. Дело за малым: повесить экран, выставить свет, стул, штатив, камера, USB… и наша программа.

У меня были большие планы по реализации этой функции:

  • приходит человек, причесывается, садится напротив камеры
  • оператор наводит камеру, поправляет человеку волосы, одежду… ну чтобы красиво
  • садиться за программу и нажимает кнопку «Сделать все автоматом»
  • все.

Тем временем программа должна:

  • подключиться к камере через WIA
  • заставить камеру сделать фотографию
  • получить из камеры свежий снимок
  • повернуть его в соответствии с данными о повороте
  • найти на фотографии лицо, определив прямоугольник, в который оно вписано
  • высчитать процент масштабирования так, чтобы прямоугольник лица занимал 80% кадра 3х4см при разрешении 300dpi
  • смасштабировать фото и наложить его на белый фон
  • сохранить фото в анкету человека

О распознавании лица на изображении много писано, но до этого этапа я еще не дошел, возможно расскажу о них в следующий раз. Хватает проблем и на первых трех. О них и пойдет речь.

Windows Image Acquisition (WIA) — это простой способ работы с большинством моделей устройств обработки изображений (фотокамера, сканер, видеокамера и другие). Для успешной работы, нужно, чтобы устройство, как минимум, отобразилось в «Сканерах и камерах» Панели управления Windows. Чтобы это произошло — нужен подходящий драйвер. Какие-то устройства работают из коробки, а другим нужно устанавливать WIA-драйвер вручную, как в случае с фотокамерами Canon EOS.
Самая полезная статья MSDN, которая действительно помогает разораться с проблемами WIA — это статья с примерами. Я случайно наткнулся только на одну, must have.

Простейший код

Для простоты понимания, я приведу здесь код на VB.NET 2008 и C# 2008, и разберу их по полочкам. Сразу обращу внимание, что в нем опущены все субъективные методики, а также проверки на ошибки, чтобы максимально упростить пример. Продумывать логику приложения каждый должен сам, т.к. задачи у всех разные, и бывает очень сложно разобраться в чьем-то коде, особенно, когда тебе из него нужно лишь несколько строк. Коллеги могут раскрыть код на предпочтительном языке и обращаться к нему по ходу текста. Шаги полностью аналогичны.

Читайте также:  Медитация для начинающих форум

Здесь исходный код формы Form1 с единственным элементом PictureBox1, растянутым на всю форму. И самое «сложное» здесь — добавить в параметрах проекта ссылку на COM-объект WIA. Перед запуском убедитесь, что ваше устройство включено.

После 7-го шага Вы вольны делать с изображением что угодно: сохранить в файл, сохранить в базу данных, вывести на форму, преобразовать, применить фильтры и т.д. Главное, что оно у вас есть.
Я, чтобы убедиться что все работает, отображал его на форме.

Вроде все просто

Как видите — код краток и насыщен полезными действиями. Но грабли и подводные камни — вечные спутники программистов по разные стороны Microsoft. Там думали, что все сделали просто и очевидно, а мы, как всегда, не поняли.

Шаг 1

Надо выбрать устройство. Есть два пути: выбрать самому или дать выбрать пользователю. Цель у обоих способов одна — получить ID устройства — DeviceID. Дальше можно работать с WIA, используя везде этот DeviceID как ссылку на нужное устройство.

В примере открывается стандартное окно WIA для выбора устройства. Их может быть несколько.
Если нам не нужно, чтобы пользователь решал чем он хочет пользоваться, тогда можно отфильтровать доступные устройства, используя параметр WiaDeviceType. В примере я ищу фотокамеру — CameraDeviceType. Но берегитесь, некоторые картридеры прикидываются фотокамерами.
Здесь можно поступить так: пройтись циклом по всем устройствам и проверить, поддерживают ли они функцию wiaCommandTakePicture (сделать фотку). Соответственно, если таковое небыло найдено, но есть хотябы одно подходящее, то тут пользователю не отвертеться — придется ему решать, чем фотографировать. Как это сделать, хорошо описано в одном из примеров статьи MSDN (см.выше).

Камень №раз

Может статься, что ни одно устройство не поддерживает wiaCommandTakePicture. Это вводит в замешательство, особенно, если у вас Canon и стоят все программы с их диска, включая программу для Remote Shooting (удаленной съемки по USB). В ней он фотографирует, а через WIA не хочет. Здесь можно либо бодаться с Canon и клянчить у них SDK, которую они мало кому дают, а затем писать свой модуль, либо заставлять пользователя делать снимок вручную, а дальше все делать автоматом. Но в целом игра стоит свечь. Имейте в виду, что у Canon много подразделений, и SDK они распространяют каждое в своем регионе. Для России все грустно, но можно попробовать обратиться в Европейское отделение. Примерно так они мне ответили по почте.

Шаг 2

Ок, допустим нам повезло и можно фотографировать. Ур… а-э-э… What a f*ck?
Никаких настроек. Можно только сделать фото. Камера (читай — объектив) выезжает, щелкает в режиме полной автоматики (или что там на переключателе выставлено) и уезжает обратно. Ну, и на том спасибо.
Честно говоря, я не углублялся в проблематику предварительной настройки камеры удаленно, но потуги у населения замечены при помощи Гугла. Возможно кто-то смог найти решение.
Камера делает кадр и сохраняет его в свою память или карту. Теперь его надо оттуда достать!

Читайте также:  Первое и второе спряжение глаголов таблица
Шаг 3

Еще раз подключаемся к камере, но уже в другом режиме. На C# этот шаг чуть длиннее. Здесь мы подключаемся к ней, как вместилищу файлов. Будьте бдительны! Структура файлов запоминается на момент подключения! Об этом дальше.

Шаг 4

Пока писал статью, похоже, понял причину проблемы с Камнем №два. Спасибо Харб!
На этом шаге, мы запоминаем ID последнего файла, хранящегося в камере, т.к. объект Device1.Items хранит информацию обо всех файлах и папках, хранящихся в памяти камеры. Да да, и папок тоже — будьте внимательны. Через этот объект можно получить любую информацию, например имя файла. Это все есть в примерах MSDN (см.выше). Здесь нам помогает простой счетчик объектов. Логично, но не всегда верно, что наша новая фотография — сделана последней. Так что проверку на ошибки здесь тоже нужно вставить.

Шаг 5

И хватаем файл, указатель на который запомнили.
Здесь процесс загрузки фотографии будет показан стандартным WIA-интерфейсом с прогрессбаром.
Одним из параметров функции является формат передаваемого файла. Мне вот нужен wiaFormatJPEG. Это чтобы фотоаппарат вдруг не отдал мне TIFF. (шутка)

Камень №два

А вернее грабли, здесь заключаются в том, что функция, выдающая последнюю сделанную фотографию, запоминает структуру файлов камеры на момент подключения. Вот почему используется новое подключение — нужно обновить структуру файлов после фотографирования.

Шаг 6

Единственный документированный способ получения фотографии — это ее получение через вектор-интерфейс. В итоге, в этом объекте будет много всего, но нас интересует лишь один — массив байт BinaryData, содержащий изображение.

Шаги 7,8,9

Этот BinaryData требует парочки преобразований, прежде чем он станет полноценной картинкой. Байты в поток, поток в изображение. А дальше можно делать с полученным объектом что угодно (согласно комментариям в листинге).
К слову: указанным методом изображения преобразуются для хранения в СУБД (только преобразование идет в обратную сторону).

Шаг 10

Каждому свой путь, ну а я для наглядности, присвоил картинку свойству Image элемента PictureBox1. Чтобы посмотреть на себя тепленького.

Теперь осталось только обеспечить обработку ошибок, т.к. WIA — очень капризная и ситуаций будет много (больше всего их будет при разработке под x64-систему, потому что во время отладки в случае ошибки, код не выдаст исключения, а просто не будет выполнен начиная с места возникновения ошибки). Камера, например, может уснуть, пока ей долго не будут пользоваться. Многое нужно предусмотреть.

Очень часто применяется эта технология для работы типа «бюро пропусков» с фотографиями.

Теперь о вопросах для обсуждения:

  1. У кого-нибудь есть SDK для Canon? Можете ли поделиться необходимыми DLL-ками для некоммерческого использования?
  2. Распознать прямоугольник, в который вписано лицо на фотографии, можно буквально за 10 строк, используя OpenCV и ее обертку для .NET. Чем я и займусь в ближайшем будущем.

Спасибо за внимание!
UPD: Добавлен пример на C#. Убрал путаницу с шагами.

Ссылка на основную публикацию
Adblock detector