以下是保存之前在手机屏幕上看到的图像:
将图像保存到外部存储器后:
请指导如何固定由opencv绘制的矩形的颜色。
下面是我的代码:
values.clientId
以下代码设置图片:
Bitmap new_bitmap = takeScreenShot(findViewById(R.id.img));
Bitmap workingBitmap = Bitmap.createBitmap(new_bitmap);
Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
File outFile = new File("External directory", "My folder name");
FileOutputStream outStream = new FileOutputStream(outFile);
mutableBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
public Bitmap takeScreenShot(View view) {
view.setDrawingCacheEnabled(true);
view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_AUTO);
view.buildDrawingCache(true);
Bitmap image = view.getDrawingCache();
if (image != null) {
return Bitmap.createBitmap(image, 0, 0, image.getWidth(), image.getHeight());
}
return null;
}
答案 0 :(得分:0)
在保存之前如何显示图像? OpenCV不使用Alpha通道,也许在矩形位置为0(例如,如果您仅使用3个颜色值而不是4个颜色绘制矩形)?
答案 1 :(得分:0)
@Micka指出了有关Alpha通道的信息后,
我通过以下操作解决了此问题:
//First Change
Mat m_ogr = new Mat(resultBitmap.getWidth(), resultBitmap.getHeight(), CvType.CV_8UC4);
//Second Change
Imgproc.rectangle(m_ogr, new Point(rectList.get(fi).x, rectList.get(fi).y),
new Point(rectList.get(fi).x + rectList.get(fi).width, rectList.get(fi).y + rectList.get(fi).height),
new Scalar(50, 205, 50, 255), 2);
现在颜色正确。谢谢。