Sis*_*say 2 opencv face-detection save-image
我试图将OpenCV图像保存到硬盘驱动器.
这是我尝试过的:
public void SaveImage (Mat mat) {
Mat mIntermediateMat = new Mat();
Imgproc.cvtColor(mRgba, mIntermediateMat, Imgproc.COLOR_RGBA2BGR, 3);
File path =
Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
String filename = "barry.png";
File file = new File(path, filename);
Boolean bool = null;
filename = file.toString();
bool = Highgui.imwrite(filename, mIntermediateMat);
if (bool == true)
Log.d(TAG, "SUCCESS writing image to external storage");
else
Log.d(TAG, "Fail writing image to external storage");
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以展示如何使用OpenCV 2.4.3保存该图像吗?
您的问题有点令人困惑,因为您的问题是关于桌面上的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);
Run Code Online (Sandbox Code Playgroud)
......或者更完整的例子:
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...
}
Run Code Online (Sandbox Code Playgroud)
图像格式是根据提供的文件名选择的,例如,如果你的store_path字符串是"output_image.png",那么imwrite将保存它是一个PNG图像.您可以在OpenCV文档中查看有效扩展名列表.
使用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
Run Code Online (Sandbox Code Playgroud)
或者,您可以将IplImage转换为Mat
Mat newC(oldC0); //where newC is a Mat and oldC0 is your IplImage
Run Code Online (Sandbox Code Playgroud)
此外,我刚刚在OpenCV网站上注意到了这个教程,它为您提供了在(桌面)环境中加载和保存图像的步骤.
| 归档时间: |
|
| 查看次数: |
27461 次 |
| 最近记录: |