【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);
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)