[Opencv-java]-解决Mat对象出现随机瞎画问题(new出来的对象是二手的???)

new出来一个二手对象???

和往常一样,开开心心的写代码

突然出现的一个Bug让我措不及防!!!

这是怎么回事,这突如其来的花纹又是怎么回事
这些图片为啥都是 二手的 ???

在这里插入图片描述
在这里插入图片描述
出现这样的情况之后
我就深入Mat对象的源码进行观察
在这里插入图片描述
发现Mat对象的每一次操作都是基于nativeObj这个long类型的变量操作的
可能是在C++中的指针吧

然后我就对 dst 这个引用对象进行了控制台打印输出
在这里插入图片描述
他的输出结果也非常正常,每个对象的指针都不一样
在这里插入图片描述
然后突然发现后面的dataAddr 竟然出现一样的情况
我就又查看了一下dataAddr
在这里插入图片描述
发现大概意思好像是取nativeObj的地址…
等等… 地址一样???
不是new吗???

我 new 的对象是二手的???

我嘞个擦 啥情况不应该啊,new 还能 new 出来二手的

亏我昨天在情人节的时候还发了个:
如果没有对象就new一个对象

这能咋办,new都不能创建新的对象,我还上哪里找新的

突然想到了一个setTo方法
在这里插入图片描述
他的意思类似于 画图工具的油漆桶…
这样就把Mat设置成纯黑的了

然后运行代码进行操作
在这里插入图片描述
运行后代码非常正常!!!

太难了这年头 new 出来的对象都不是新的…

看来以后new一个Mat对象的时候 记得给它setTo

给它洗白白,这样不管它是新的还是旧的,
洗白白了就是白的,反正你要的就是白的!!!

发布了56 篇原创文章 · 获赞 52 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_18604209/article/details/104326301