OpenCV Error: Assertion failed (src.dims == 2 && info.height == (uint32_t)

AndroidStudio会提示问题出在这里Utils.matToBitmap(backProject, bitmap);
其实问题的原因是 mat 和 bitmap 的宽高没有匹配
我原来是这样写的:

@Override
            public void onCalcBackProject(final Mat backProject) {
                Log.i(TAG, "onCalcBackProject: " + backProject);
                ObjectDetectingActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (null == bitmap) {
                            bitmap = Bitmap.createBitmap(backProject.cols(), backProject.rows(), Bitmap.Config.ARGB_8888);
                        }
                        if(backProject!=null) {
                            Utils.matToBitmap(backProject, bitmap);
                            bitmap = ObjectDraw.convertGreyImg(bitmap, 240, 320);
                            image.setImageBitmap(bitmap);
                        }
                    }
                });
            }

问题在:

if (null == bitmap) {
                            bitmap = Bitmap.createBitmap(backProject.cols(), backProject.rows(), Bitmap.Config.ARGB_8888);
                        }

因为这里bitmap只创建了一次,没有刷新,而mat却是实时刷新的。
修改后:

 @Override
            public void onCalcBackProject(final Mat backProject) {
                Log.i(TAG, "onCalcBackProject: " + backProject);
                ObjectDetectingActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if(backProject!=null) {
                            bitmap = Bitmap.createBitmap(backProject.cols(), backProject.rows(), Bitmap.Config.ARGB_8888);
                            Utils.matToBitmap(backProject, bitmap);
                            bitmap = ObjectDraw.convertGreyImg(bitmap, 320, 200);
                            image.setImageBitmap(bitmap);
                        }
                    }
                });
            }

恢复正常

因为前者的代码 bitmap 只创建了一次,在后来程序的运行中mat则更新了。所以在mat更新的时候bitmap的尺寸信息也更新一下,问题就解决了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值