2013-02-16 4 views
2

мне нужно перевернуть (зеркало) кадр, полученные от веба-камеры, и я последовал такой код:Зеркального изображения в OpenCV

cv::flip(gray,gray,1); 
imshow("flipped",gray); 

серых резюме :: формат Mat и перевернул является cvNamedWindow. Я получаю ошибку сегментации в qt creator IDE. Я сомневаюсь в размере серого, который может быть причиной ошибки сегментации. серый - это изображение с серой шкалой, преобразованное из фактического изображения, полученного от кулачка. Как я могу удалить ошибку? у кого-то есть лучшие идеи?

+0

Вы получаете то же самое. ошибка, если вы попытаетесь использовать временный массив? То есть 'cv :: flip (серый, tmp, 1); imshow («flipped», tmp); « – shinjin

+0

Да, такая же ошибка ... – ranger

ответ

2

I thk MingW - это вердикт. Сообщается, что в версии, которую я использую, есть некоторые ошибки, подобные этой. Итак, для получения зеркального изображения я перевернул изображение src с помощью флип-кода 0, а затем повернул его на 180 градусов, чтобы перевернуть его вдоль оси y.

cv::Mat dst; 
    cv::flip(src,dst,0); 
    Point2f src_center(dst.cols/2.0F, dst.rows/2.0F); 

    cv::Mat rot_matrix = getRotationMatrix2D(src_center, 180.0, 1.0); 

    cv::Mat rotated_img(Size(dst.size().height, dst.size().width), dst.type()); 

    warpAffine(dst, rotated_img, rot_matrix, dst.size()); 


    imshow("flipped",rotated_img); 
2

Одна из причин ошибки сегментации заключается в том, что вы, возможно, не внедрили проверку для «плохого» кадра, который передается веб-камерой на OpenCV. Вам нужно поставить чек для фрейма, который не является NULL, а затем использовать флип/другие операции над потоком.

+0

Нет, я проверял, что ... эта проблема сохраняется, но когда я изменяю флипмод на 0 его рабочий (перевернуть по оси x), но мне нужно – ranger

+0

Возьмите флип, а затем транспонирование –

+0

Мне нужно получить эффект зеркала .... – ranger

Смежные вопросы