Ваш вопрос немного запутанный, так как ваш вопрос касается OpenCV на рабочем столе, но ваш код для Android, и вы спрашиваете об IplImage, но ваш опубликованный код использует C++ и Mat. Предполагая, что вы находитесь на рабочем столе с помощью C++, вы можете сделать что-то вдоль линий:
cv::Mat image;
std::string image_path;
//load/generate your image and set your output file path/name
//...
//write your Mat to disk as an image
cv::imwrite(image_path, image);
... Или для более полного примера:
void SaveImage(cv::Mat mat)
{
cv::Mat img;
cv::cvtColor(...); //not sure where the variables in your example come from
std::string store_path("..."); //put your output path here
bool write_success = cv::imwrite(store_path, img);
//do your logging...
}
Формат изображения выбирается на основе предоставленное имя файла, например если ваша строка store_path
была «output_image.png», то imwrite сохранит это изображение PNG. Вы можете увидеть список действительных расширений: the OpenCV docs.
Остерегайтесь того, что при записи изображений на диск с помощью OpenCV масштабирование будет отличаться в зависимости от типа Mat; то есть для плавающих изображений предполагается, что изображения находятся в пределах диапазона [0, 1], а, скажем, без знака, они будут от [0, 256].
Для IplImages я бы посоветовал просто переключиться на использование Mat, поскольку старый C-интерфейс устарел. Вы можете преобразовать IplImage в Mat через cvarrToMat
, затем использовать Mat, например.
IplImage* oldC0 = cvCreateImage(cvSize(320,240),16,1);
Mat newC = cvarrToMat(oldC0);
//now can use cv::imwrite with newC
поочередно, вы можете преобразовать IplImage к мату только с
Mat newC(oldC0); //where newC is a Mat and oldC0 is your IplImage
Кроме того, я только что заметил this tutorial на сайте OpenCV, который дает вам ходить, хотя при загрузке и сохранения изображений в (рабочий стол).
Скорее всего, вам нужно будет добавить разрешения доступа к SDK для вашего манифеста. –
Я не делаю этого на телефоне Android. Я только что получил вышеприведенный образец из другой тенденции, задав вопрос, который я задаю для телефона Android. Что я просто хочу сделать, это сохранить обрезанное лицо от кода обнаружения лица в качестве нового изображение, используя функцию, аналогичную описанной выше, но используя IplImage * на рабочем столе, а не Android. Спасибо за ответ. – Sisay
Highgui заменяется Imgcodecs версии 3. mRgba на самом деле является входным мат. http://stackoverflow.com/questions/25059576/highgui-path-is-missing-in-opencv-3-0-0-generated-jar-classnotfoundexception-or – profimedica