我正在寻找Android应用程序的简单例子,它使用opencv将彩色图像转换为灰度。 我正在尝试使用thic代码,但是应用程序在此行后出现故障Mat tmp = new Mat(bmp.getWidth(), bmp.getHeight(), CvType.CV_8U);
。Android与opencv - 图像灰度
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView img=(ImageView)findViewById(R.id.imageView1);
Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);
Mat tmp = new Mat(bmp.getWidth(), bmp.getHeight(), CvType.CV_8U);
Utils.bitmapToMat(bmp, tmp);
Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_RGB2GRAY);
Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_RGB2GRAY,4);
Utils.matToBitmap(tmp, bmp);
img.setImageBitmap(bmp);
}
我假设发生这种情况是因为bmp.getWidth()和bmp.getHeight()都返回0.我到目前为止还没有使用OpenCV,所以我不确定这是否是真正的原因。不过,您可以尝试在其中加入一些硬编码值来测试它是否会产生任何影响。 – helleye