【OpenCV】Flutter 上采用ffi 与 c++ 的opencv交互使用总结

一: flutter 中使用 opencv 的矩阵数据无法直接使用 Image.memory 成功显示图片的,正确步骤:

        a)  imencode 对 Mat 数据进行一次处理,将数据返给dart

        b)  dart 层通过图像数据转成 imgLib.Image 对象

        c) 再通过 imgLib.JpegEncoder() 处理:

List<int> jpegBytes = imageLib.JpegEncoder().encodeImage(image) 

        d)  最后使用 Image.memory 组件即可正确显示图像了

二: OpenCV Mat::ones()用法及注意事项:

        对于单通道的矩阵,所有元素为1。但是对于多维矩阵(即多通道类型),只有第一个通道的元素被设置为1,其他维度的矩阵元素全为0。

        如果多维度想为1,可以如下:

        Mat mask = Mat(rows,cols,type,Scalar(1,1,1));

三:opencv 矩阵减法(Mat - Mat) , 解决负数自动变为0 的方法

cv::Mat src_img = cv:imread("img_path");//默认格式是 CV_8UC3 
cv::Mat diffMat; src_img.convertTo(diffMat,CV_32FC3);//CV_32FC3表示float32 通道数为3 diffMat = diffMat - cv::Scalar(104, 117, 123);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值