OpenCv函数学习(一)[建议收藏]

IntelImageProcessingLibrary(IPL)位深度在记录数字图像的颜色时,计算机实际上是用每个像素需要的位深度来表示的。黑白二色的图像是数字图像中最简单的一种,它只有黑

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

Intel Image Processing Library (IPL)

 1 typedef struct _IplImage
 2 {
 3 int nSize; /* IplImage大小 */
 4 int ID; /* 版本 (=0)*/
 5 int nChannels; /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */
 6 int alphaChannel; /* 被OpenCV忽略 */
 7 int depth; /* 像素的位深度,主要有以下支持格式: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,IPL_DEPTH_16S, IPL_DEPTH_32S,
 8 IPL_DEPTH_32F 和IPL_DEPTH_64F */
 9 char colorModel[4]; /* 被OpenCV忽略 */
10 char channelSeq[4]; /* 同上 */
11 int dataOrder; /* 0 - 交叉存取颜色通道, 1 - 分开的颜色通道. cvCreateImage只可以创建交叉存取图像 */
13 int origin; /*图像原点位置: 0表示顶-左结构,1表示底-左结构 */
14 int align; /* 图像行排列方式 (4 or 8),在 OpenCV 被忽略,使用 widthStep 代替 */
15 int width; /* 图像宽像素数 */
16 int height; /* 图像高像素数*/
17 struct _IplROI *roi; /* 图像感兴趣区域,当该值非空时,只对该区域进行处理 */
19 struct _IplImage *maskROI; /* 在 OpenCV中必须为NULL */
20 void *imageId; /* 同上*/
21 struct _IplTileInfo *tileInfo; /*同上*/
22 int imageSize; /* 图像数据大小(在交叉存取格式下ImageSize=image->height*image->widthStep),单位字节*/
23 char *imageData; /* 指向排列的图像数据 */
24 int widthStep; /* 排列的图像行大小,以字节为单位 */
25 int BorderMode[4]; /* 边际结束模式, 在 OpenCV 被忽略*/
26 int BorderConst[4]; /* 同上 */
27 char *imageDataOrigin; /* 指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的 */
28 } IplImage;

位深度

在记录数字图像的颜色时,计算机实际上是用每个像素需要的位深度来表示的。黑白二色的图像是数字图像中最简单的一种,它只有黑、白两种颜色,也就是说它的每个像素只有1位颜色,位深度是1,用2的一次幂来表示;考虑到位深度平均分给R, G, B和Alpha,而只有RGB可以相互组合成颜色。所以4位颜色的图,它的位深度是4,只有2的4次幂种颜色,即16种颜色或16种灰度等级 ) 。8位颜色的图,位深度就是8,用2的8次幂表示,它含有256种颜色 ( 或256种灰度等级 )。24位颜色可称之为真彩色,位深度是24,它能组合成2的24次幂种颜色,即:16777216种颜色 ( 或称千万种颜色 ),超过了人眼能够分辨的颜色数量。当我们用24位来记录颜色时,实际上是以2^(8×3),即红、绿、蓝 ( RGB ) 三基色各以2的8次幂,256种颜色而存在的,三色组合就形成一千六百万种颜色。

CvLoadImage

IplImage* CvLoadImage(const char *cFileName, int flags)

CvLoadImage(cFileName, -1); // 默认读取图像的原通道数

CvLoadImage(cFileName, 0);  // 强制转化读取图像为灰度图

CvLoadImage(cFileName, 1);  // 读取彩色图

CvCloneImage

IplImage* CvCloneImage(const IplImage *p)

在使用函数之前,不用特地开辟内存,即该函数会自己开一段内存,然后复制好image里面的数据,然后把这段内存中的数据返回.

CreateCvImage

IplImage* cvCreateImage(CvSize size, int depth, int channels)

作用申请一个图片结构大小的内存,比如创建灰色图像

IplImage *pGraycvImage = cvCreateImage(cvGetSize(pSrc_Image), 8, 1);

cvCvtColor(pSrc_Image,pGraycvImage ,CV_BGR2GRAY);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120250.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DSP效果器调音教程_DSP控制器

    DSP效果器调音教程_DSP控制器1)DSP输出给5V的电路(如D/A),无需加任何缓冲电路,可以直接连接。3)的JTAG口的信号也必须为3.3V,否则有可能损坏DSP。dsp教程24。为什么要片内RAM大的DSP效率高?目前DSP发展的片内存储器RAM越来越大,要设计高效的DSP系统,就应该选择片内RAM较大的DSP。片内RAM同片外存储器相比,有以下优点:1)片内RAM的速度较快,可以保证DSP无等待运行。2)对于C2000…

    2022年9月3日
    3
  • 芯片开发工程师_如何成为芯片架构师

    芯片开发工程师_如何成为芯片架构师数字IC设计师/前端设计工程师/芯片架构师架构师和领域相关性较强,依赖于历史经验。网络芯片的架构师,你让他去做AI加速,可能也没办法一下子拿出成果来。芯片工程师年薪百万是极限,项目负责人和架构师可以拿到千万。IC设计又分为两个方向:数字和模拟数字方向通常包含四个岗位:前端设计,设计验证,DFT,后端。模拟可以分为两个大方向:模拟设计和模拟版图。在数字设计中,还有一个岗位是架构设计,这个职位对从业者的要求比较高,要么是博士毕业,要么是具有丰厚经验的前端设计工程师(15year

    2022年9月7日
    0
  • 最短路径算法–无向图[通俗易懂]

    最短路径算法–无向图[通俗易懂]最短路径算法Dijkstra算法是最短路径算法中为人熟知的一种,是单起点全路径算法。该算法被称为是“贪心算法”的成功典范。1、表示图的数据结构邻接列表邻接列表:在邻接列表实现中,每一个顶点会存储一个从它这里开始的边的列表。比如,如果顶点A有一条边到B、C和D,那么A的列表中会有3条边邻接…

    2022年5月24日
    38
  • 十四、迭代器模式—— 一个一个的遍历 #和设计模式一起旅行#「建议收藏」

    套路要深…故事背景今天要介绍一下迭代器,首先简单说明一下,什么是迭代器,为什么要使用迭代器。 迭代器(Iterate) 的意思就是反复做某件事情。那为什么要反复做某件事情呢,比如我们有个容器里面装了很好东西(这些东西都是同一类型的),要从容器中取每一个东西出来,就要反复去做一个取出的事情。故事主角迭代器模式 : 提供一种方法顺序访问一个聚合对象中的各个元素,而…

    2022年2月27日
    37
  • Laravel find in set排序

    Laravel find in set排序

    2021年11月9日
    51
  • 算法-分治法

    算法-分治法

    2022年3月12日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号