Сохранение образа в OpenCV

Да, хотя это звучит как что-то, что в идеале должно начинаться с разветвления редактора 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 показывает, где он ищет валидаторы, специфичные для типа контента, и предпочитает те, которые он использует, определен в базовом (менее конкретном) типе контента.

26
задан Sujay Ghosh 15 January 2012 в 06:15
поделиться

11 ответов

В OSX сохранение видеокадров и фотографий работало только тогда, когда я указывал полный путь к cvSaveImage:

cvSaveImage("/Users/nicc/image.jpg",img);
0
ответ дан nicc 28 November 2019 в 07:18
поделиться

Сэйнт Льюис прав. Когда вы активируете камеру с помощью cvCaptureFromCAM, автоматический баланс белого еще не отрегулирован (это медленный процесс), поэтому вы можете получить в основном белый или почти черный (в зависимости от камеры и ваших условий освещения) в первых кадрах. То же самое происходит, когда происходит внезапное изменение освещения сцены. Просто подождите некоторое время после открытия камеры, очистите буфер, и вы готовы к работе.

1
ответ дан Vitor 28 November 2019 в 07:18
поделиться

Я использую следующий код для захвата изображений:

CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY );
if(!capture) error((char*)"No Capture");
IplImage *img=cvQueryFrame(capture);

Я знаю, это работает точно

1
ответ дан Yogi 28 November 2019 в 07:18
поделиться

Я знаю проблему! Вы просто ставите точку после "test.jpg"!

cvSaveImage ("test.jpg"., PSaveImg);

Я могу ошибаться, но считаю, что это плохо!

3
ответ дан lf. 28 November 2019 в 07:18
поделиться

По моему опыту, 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 ++)

5
ответ дан sastanin 28 November 2019 в 07:18
поделиться

Я предлагаю вам запустить проверку работоспособности OpenCV

Это серия небольших исполняемых файлов, расположенных в каталоге bin opencv.

Он проверит, исправна ли ваша камера

1
ответ дан Eric 28 November 2019 в 07:18
поделиться

извините, если это слишком очевидно. Вы уверены, что веб-камера правильно видна и обнаружена OpenCV? другими словами, вы получаете изображение, когда перенаправляете захваченный кадр в окно "highGui"? Например, так:

 frame = cvQueryFrame( capture );
 cvNamedWindow( "myWindow", CV_WINDOW_AUTOSIZE );
 cvShowImage( "myWindow", frame );
3
ответ дан 28 November 2019 в 07:18
поделиться

Иногда первый вызов cvQueryFrame () возвращает пустое изображение. Попробуйте:

IplImage *pSaveImg = cvQueryFrame(pCapturedImage);
pSaveImg = cvQueryFrame(pCapturedImage);

Если это не сработает, попробуйте выбрать устройство захвата автоматически:

CvCapture *pCapturedImage = cvCreateCameraCapture(-1);

Или вы можете попробовать выбрать другие устройства захвата, где n = 1,2,3 ...

CvCapture *pCapturedImage = cvCreateCameraCapture(n);

PS: Также я считаю, что есть это неправильное понимание захваченного изображения при просмотре имени вашей переменной. Переменная pCapturedImage - это не изображение, а захват. Вы всегда можете "прочитать" изображение из захвата.

5
ответ дан 28 November 2019 в 07:18
поделиться

По моему опыту, первый несколько кадров, которые захватываются при использовании:

frame = cvQueryFrame( capture );

Обычно остаются пустыми. Вы можете немного подождать (около 3 секунд), а затем попытаться сделать снимок.

0
ответ дан 28 November 2019 в 07:18
поделиться

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

0
ответ дан 28 November 2019 в 07:18
поделиться

У меня была такая же проблема в Windows Vista, я просто добавил этот код перед cvQueryFrame :

cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 720);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480);
1
ответ дан 28 November 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: