Да, хотя это звучит как что-то, что в идеале должно начинаться с разветвления редактора JSP, начиная с его синтаксического анализатора до самого конца ...
Если вы определили новый тип контента, используя точку расширения org.eclipse.core.contenttype.contentTypes
(используя новое расширение файла), а затем предоставили Validator для исходной точки расширения проверки, org.eclipse.wst.sse.ui.sourcevalidation
, явно для вашего типа контента, валидатор HTML следует пропустить в связи с более конкретным определенным для вашего типа контента https://github.com/eclipse/webtools.sourceediting/blob/0c532000ad09e53c9fb8ddfb1c3f1def983f57c0/core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile /DocumentRegionProcessor.java#L266 показывает, где он ищет валидаторы, специфичные для типа контента, и предпочитает те, которые он использует, определен в базовом (менее конкретном) типе контента.
В OSX сохранение видеокадров и фотографий работало только тогда, когда я указывал полный путь к cvSaveImage:
cvSaveImage("/Users/nicc/image.jpg",img);
Сэйнт Льюис прав. Когда вы активируете камеру с помощью cvCaptureFromCAM, автоматический баланс белого еще не отрегулирован (это медленный процесс), поэтому вы можете получить в основном белый или почти черный (в зависимости от камеры и ваших условий освещения) в первых кадрах. То же самое происходит, когда происходит внезапное изменение освещения сцены. Просто подождите некоторое время после открытия камеры, очистите буфер, и вы готовы к работе.
Я использую следующий код для захвата изображений:
CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY );
if(!capture) error((char*)"No Capture");
IplImage *img=cvQueryFrame(capture);
Я знаю, это работает точно
Я знаю проблему! Вы просто ставите точку после "test.jpg"!
cvSaveImage ("test.jpg"., PSaveImg);
Я могу ошибаться, но считаю, что это плохо!
По моему опыту, OpenCV пишет черное изображение, когда SaveImage
задается матрица с битовой глубиной, отличной от 8-битной. Фактически, это как-то задокументировано:
С помощью этой функции можно сохранить только 8-битные одноканальные или 3-канальные (с порядком канала BGR) изображения. Если формат, глубина или порядок каналов отличаются, используйте
cvCvtScale
иcvCvtColor
, чтобы преобразовать его перед сохранением, или используйте универсальныйcvSave
, чтобы сохранить изображение в формате XML или YAML.
В вашем случае вы можете сначала исследовать, какой тип изображения захватывается, изменить свойства захвата (я полагаю, CV_CAP_PROP_CONVERT_RGB
может быть важным) или впоследствии преобразовать его вручную.
Это пример того, как преобразовать в 8-битное представление с OpenCV. cc
здесь представлена исходная матрица типа CV_32FC1
, cc8u
- ее масштабированная версия, которая на самом деле написана SaveImage
:
# I want to save cc here
cc8u = CreateMat(cc.rows, cc.cols, CV_8U)
ccmin,ccmax,minij,maxij = MinMaxLoc(cc)
ccscale, ccshift = 255.0/(ccmax-ccmin), -ccmin
CvtScale(cc, cc8u, ccscale, ccshift)
SaveImage("cc.png", cc8u)
(извините, это код Python, но он должен легко перевести на C / C ++)
Я предлагаю вам запустить проверку работоспособности OpenCV
Это серия небольших исполняемых файлов, расположенных в каталоге bin opencv.
Он проверит, исправна ли ваша камера
извините, если это слишком очевидно. Вы уверены, что веб-камера правильно видна и обнаружена OpenCV? другими словами, вы получаете изображение, когда перенаправляете захваченный кадр в окно "highGui"? Например, так:
frame = cvQueryFrame( capture );
cvNamedWindow( "myWindow", CV_WINDOW_AUTOSIZE );
cvShowImage( "myWindow", frame );
Иногда первый вызов cvQueryFrame () возвращает пустое изображение. Попробуйте:
IplImage *pSaveImg = cvQueryFrame(pCapturedImage);
pSaveImg = cvQueryFrame(pCapturedImage);
Если это не сработает, попробуйте выбрать устройство захвата автоматически:
CvCapture *pCapturedImage = cvCreateCameraCapture(-1);
Или вы можете попробовать выбрать другие устройства захвата, где n = 1,2,3 ...
CvCapture *pCapturedImage = cvCreateCameraCapture(n);
PS: Также я считаю, что есть это неправильное понимание захваченного изображения при просмотре имени вашей переменной. Переменная pCapturedImage - это не изображение, а захват. Вы всегда можете "прочитать" изображение из захвата.
По моему опыту, первый несколько кадров, которые захватываются при использовании:
frame = cvQueryFrame( capture );
Обычно остаются пустыми. Вы можете немного подождать (около 3 секунд), а затем попытаться сделать снимок.
я думаю, просто камера сначала не инициализируется frame. Попытайтесь сохранить изображение через 10 кадров.
У меня была такая же проблема в Windows Vista, я просто добавил этот код перед cvQueryFrame
:
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 720);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480);