Вы должны использовать строчный вид
в xml для вашего настраиваемого макета:
& lt; view class = "com.test.www.BrushPreview" android: id = "@ + id / brushview" android: layout_width = "100dip" android: layout_height = "100dip" android: layout_gravity = "center" / & gt;
(в соответствии с ваша ссылка тоже), и она должна работать.
В противном случае он пытается создать android.view .View
экземпляра.
Ваша текущая установка OpenCV не поддерживает формат файла, который вы пытаетесь создать на диске.
Проверьте правильность расширения файла. Если это так, вам придется перекомпилировать OpenCV и добавить поддержку этого формата и, возможно, установить библиотеки, которые вам не хватает.
Это все, что можно сказать без дополнительной информации.
EDIT:
Поскольку мне также не удалось создать приложение, которое использует интерфейс C ++ OpenCV (v2.3 на VS2005), я закончил использование следующего обходного пути: при необходимости преобразуйте типы C ++ в типы C.
Преобразование из IplImage*
в cv::Mat
довольно прямолинейно:
IplImage* ipl_img = cvLoadImage("test.jpg", CV_LOAD_IMAGE_UNCHANGED);
Mat mat_img(ipl_img);
imshow("window", mat_img);
Преобразование cv::Mat
в IplImage*
не так очевидно, но это также просто , а трюк - использовать IplImage
вместо IplImage*
:
IplImage ipl_from_mat((IplImage)mat_img);
cvNamedWindow("window", CV_WINDOW_AUTOSIZE);
// and then pass the memory address of the variable when you need it as IplImage*
cvShowImage("window", &ipl_from_mat);
Попробуйте
cvSaveImage("test.jpg", &(IplImage(image)));
вместо
imwrite("test.jpg", image);
Это известная ошибка в используемой вами версии.
Из API OpenCV 2.2 :
Функция imwrite сохраняет изображение в указанный файл. Формат изображения выбирается на основе расширения имени файла, см. Imread для списка расширений. С помощью этой функции можно сохранить только 8-битные (или 16-разрядные в случае PNG, JPEG 2000 и TIFF) одноканальные или трехканальные (с порядком канала BGR). Если формат, глубина или порядок каналов различны, используйте Mat :: convertTo и cvtColor для его преобразования перед сохранением или используйте универсальные функции ввода / вывода XML для сохранения изображения в формате XML или YAML.
blockquote>У вас может быть больше удачи преобразовать файл в 8 или 16 бит до сохранения.
Однако даже с одноканальными 8-битными файлами у меня были неизвестные ошибки расширения, пытающиеся сохранить файлы jpg или png но обнаружил, что bmp работает.
imread()
для загрузки JPG на WinXP с OpenCV 2.3. ЛОЛ. Я должен решить это, прежде чем перейти кimwrite()
. Дайте нам знать ваши выводы. – karlphillip 4 August 2011 в 00:43