文章目录

  • 1. image.Image转gocv.Mat
  • 2. gocv.Mat转image.Image

1. image.Image转gocv.Mat

func cvtImageToMat(img image.Image) (gocv.Mat, error) {bounds := img.Bounds()x := bounds.Dx()y := bounds.Dy()bytes := make([]byte, 0, x*y*3)for j := bounds.Min.Y; j < bounds.Max.Y; j++ {for i := bounds.Min.X; i < bounds.Max.X; i++ {r, g, b, _ := img.At(i, j).RGBA()bytes = append(bytes, byte(b>>8), byte(g>>8), byte(r>>8))}}return gocv.NewMatFromBytes(y, x, gocv.MatTypeCV8UC3, bytes)
}

2. gocv.Mat转image.Image

/*Parameters:mat: gocv.Mat,原图像format: string,要转换的类型格式,比如.png .jpegReturns:img: image.Image 转换之后的图像err: error
*/
func cvtMatToImage(mat gocv.Mat, format string) (img image.Image, err error) {// 把mat转成字节,指定图片格式formatbuf, err := gocv.IMEncode(gocv.FileExt(format), mat)if err != nil {return nil, err}// 根据图片的字节,创建出readerreader := bytes.NewReader(buf)// 解码,将字节解码成图片dest, _, err := image.Decode(reader)if err != nil {return nil, err}return dest, err
}

调用:

func main() {src := gocv.IMRead("Blue.jpg", gocv.IMReadColor)if src.Empty() {log.Println("failed to load image")return}img, err := cvtMatToImage(src, ".jpeg")if err != nil {log.Println(err)return}
}

后来才发现,,,gocv.Mat转image.Image有直接调用ToImage()方法就可以了,:

gocv.Mat类型和image.Image互相转化相关推荐

  1. Java基本数据类型和String类型的转化

    基本数据类型转String类型只需要 + ""即可,如下 public static void main(String[] args) {int n1 = 100;float n2 ...

  2. OpenCV数据结构与基本绘图(Mat 类、Point类、Scalar类等)

    文章目录 1.基础图像容器 Mat 1.1Mat 结构的使用 1.2像素值的存储方法 1.3 显示创建 Mat 对象的七种方法 1.3.1 Mat 的常用构造函数 1.4 OpenCV 中的格式化输出 ...

  3. Python基础必掌握的5种数据类型和8种内置函数基本操作

    今天跟着我一起学习/复习一下Python语法的5种基本数据类型和8种数据基本操作.如果你已经掌握了这块内容,也建议跟着文中代码进行操作加深印象巩固学习成果. 整套学习自学教程中应用的数据都是<三 ...

  4. OpenCV Mat类详解和用法

    OpenCV Mat类详解和用法 我们有多种方法可以获得从现实世界的数字图像:数码相机.扫描仪.计算机体层摄影或磁共振成像就是其中的几种.在每种情况下我们(人类)看到了什么是图像.但是,转换图像到我们 ...

  5. 06-void类型和never类型

    void类型和never类型都是ts新增的类型,这两者的共同点是都常见用于声明函数的返回值的类型,这里我们把它们两放在一起介绍有助于大家区分. void,表示函数返回值空,即undefined. ne ...

  6. 防火墙--NAT类型和vrrp

    防火墙--NAT类型和vrrp 一.根据以下问题总结: 1.防火墙支持哪些NAT技术,主要应用场景是什么? NAT类型: 根据转化方式的不同,NAT可以分为三类: 源NAT,源地址转化的NAT. 有: ...

  7. cv mat 灰度值和_OpenCV2:总结篇 cv::Mat 类

    一.简介 在OpenCV中,可以用C++语法的Mat类来表示一张图像 也可以用C语法的lpllmage或CvMat结构体来表示一张图像 1.单通道像素值 2.多通道像素值 OpenCV默认颜色顺序为B ...

  8. 基本数据类型和String相加结果一定是字符串型

    今天见到一道选择题有一选项为基本数据类型和String相加结果一定是字符串型,例如: 输出结果为: 确实是这样,那么原理是什么呢? 在我们把一个基本数据类型和一个String类型相加的时候,编译器会将 ...

  9. 在ROS下利用OpenCV的Mat类,将激光点云展开为深度图像(从零开始,超详细)

    激光雷达3D目标检测任务需要将地面滤除,滤除地面的方法多种多样:基于深度学习.基于栅格.基于平面拟合.基于条件随机场.基于深度图像等等.关于将点云转化为深度图像,PCL库中有相关函数,但使用起来有一定 ...

最新文章

  1. Vue 系列之 组件
  2. 每日一皮:你不看我的接口文档就乱调的吗?
  3. 不能使用 '';文件已在使用中。
  4. eclipse 使用jetty调试时,加依赖工程的源码调试方法
  5. java csv下载_java 生成csv文件,弹出下载对话框。。。
  6. POJ 2054 Color a Tree
  7. mac hosts文件已锁定无法修改怎么办?hosts修改权限设置教程
  8. 面试一线互联网大厂?那这道题目你必须得会!
  9. sas sata ssd硬盘类型,硬盘接口
  10. android 系统wifi连接不上,安卓手机wifi连不上的处理操作
  11. 如何解决移动端300ms延迟的问题
  12. seo和sem是什么意思
  13. 投影向量=投影长度乘以单位向量
  14. 用 Java 实现一个远程控制客户端
  15. python办公自动化价值是什么意思_用python进行办公自动化都需要学习什么知识呢?...
  16. 报表工具使用教程-FineReport决策报表导出Plus
  17. 【已解决】Unknown error 1146
  18. 内存地址对齐问题研究所分析
  19. 特岗教师计算机专业面试题,2019特岗教师面试试题及参考答案
  20. Verge3D for 3ds Max增强材质库发布

热门文章

  1. 2019新的一年,美好的心情来源发现,给大家分享一个双显示器下显示不同的桌面背景
  2. 从原理到操作,让你在 APISIX 中代理 Dubbo 服务更便捷
  3. EasyExcel组件导入Excel文件
  4. linux+gedit+编辑文件,linux gedit编辑文件
  5. FAQ:IDEA中maven导包Dependencies Libraries有的包External Libraries没有
  6. 微信支付开发关键点技术解析
  7. 更好的中英文混合语音识别系统
  8. orbslam2-基础理论(六)-g2o(常用的优化算法)
  9. mac笔记本怎么外接显示屏_mac怎么连接外接显示器_苹果mac笔记本怎么外接显示器-系统城...
  10. 在 java 中 关于final 关键字_在Java中,关于final关键字的说法正确的是