无法从mat转换为int_图像处理——基础转换

9a92654b0c660fd19f38a277ef202e54.png

写在前面没用的话~

是单存的想写专栏,刚刚申请的专栏名字叫“图像处理” 不知道能不能过。 开了专栏不知道能写多少,我是这样想的,一来写点东西在里面方便自己以后用的时候去找,再来,其他人看到了可以拿去用。其实想在github上建立一个代码库的。但是 github 代码更新来更新去的太麻烦,而且建个C++工程文件貌似好奇怪,好吧!我是一个不会用 gcc 的工程师。 这篇专栏的目的是因为,在学生时代处理图像的万能工具 OpenCV 在公司竟然不能商用了,因为 OpenCV的开源协议是个人或是科研,我这个重度依赖别人代码 API 的工程师要疯了。昨天也就是周五晚上,组长要我下周一交一个不能用 OpenCV 的图像处理代码,我瞬间蒙掉了,然后组长给我一个微笑,加班吧少年,然后扔给了我一个文件夹,还好这个文件夹救了我。我在今天晚上完成了任务,emmm 其实是拖拖拉拉 15 点才开始写直到 18:50,code 并且测试完,然后坐到 19 点打卡走人。So,我决定记下来一些东西,这些以后我肯定还会用得到的东西,方便自己用的时候上来找一找,而不是在翻一堆代码。

—— 2019.07.06 毕业后的第一个周末 FIXME:好心情 XXX:赶项目一时爽 一直赶时时爽 @TODO:加班

工作了几个月了转嵌入式了~

关于一些约定

  • 代码使用的是 C/C++,代码的函数使用的 C/C++ 标准库执行的图像算法,脱离于开源库如 OpenCV
  • 函数使用驼峰命名方式,变量使用 '_' 连接的命名方式,每个变量名字前面尽量带上类型,以方便知道变量代表什么
  • 函数形参,一般情况下函数的 return 返回的是状态码,比如这个函数是否处理成功,或是根据函数功能返回的信息,一般不返回计算的值或是其他变量;函数前面的形参传入的是函数处理需要的东西,计算的值和处理得到的东西使用 ‘&’ 得到。

基本代码

  • 图像显示

showImage()

这里借助 OpenCV,我也不会其他方法,没了 python 感觉自己就是个白痴。

void 
  • 图像变量转化

cvMat to unsigned char*

图像是由若干通道的像素矩阵堆成,像素的取值范围为 0~255 整型数值,这样,我们可以将每个像素表示成无符号字符 unsigned char,所以一副图像,我们将其表示成一个无符号数组,为了方便使用,我们使用 OpenCV 转成 unsigned char*,注意这里使用 OpenCV 读取图像,和上一节使用 OpenCV 显示图像,除这两个使用到 OpenCV 之外,算法内不会包含 OpenCV,如有包含纯属巧合。

cv

unsigned char* to cvMat

在使用 unsigned char* 处理图像的时候,并不能肉眼看见图像的处理效果,所以还需要把无符号字符数组还原回图像,方便查看。当然,因为当前图像储存在数组里面,若干函数中必须传入图像的宽度、高度和通道数。

void 
  • 图像通道转化

BGRPacked2RGBPacked()

每种读取图像的方式不一致,比如 OpenCV 读取图像的通道排序为 BGR,python中的 matplotlib 读取的顺序为 RGB,或是在深度学习中输入图像的通道顺序都不一致,因此需要转换通道格式。

// @param:
  • 图像灰度化

BGR2GRAY()

灰度化这个东西很常用,几乎大部分的图像处理操作都是在灰度图像上完成的, OpenCV给出了所有格式互转的接口,这里我们给出最常用的转灰度图方法,BGR 通道图像转灰度图

// @param:[
  • 图像转二进制格式

RGB2BIN

string 

GRAY2BIN

string 
  • 二进制格式转图像

BIN2RGB

string 

BIN2GRAY

string 
  • 改变图像大小

resize()

int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值