1. 矩阵数据类型
通用矩阵数据类型:
<wbr><wbr><wbr><wbr><wbr>CV_<bit_depth>(S|U|F)C<number_of_channels><br>
其中,S表示带符号整数;<br><wbr><wbr><wbr><wbr><wbr>U表示无符号整数;<br><wbr><wbr><wbr><wbr><wbr>F表示浮点数;<br>
例如:CV_8UC1 表示8位无符号单通道矩阵;<br>
CV_32FC2 表示32位浮点数双通道矩阵;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
2. 图像数据类型
通用图像数据类型为:
IPL_DEPTH_<bit_depth>(S|U|F)
如:IPL_DEPTH_8U 表示8位无符号整数图像;
IPL_DEPTH_32F 表示32位浮点数图像;
3. 分配和释放图像
3.1 分配一幅图像
IpIImage * cvCreateImage(cvSize size, int depth, int channels);
其中size可以用cvSize(width, height)得到。
depth为像素的单位,包括:
IPL_DEPTH_8U
IPL_DEPTH_8S
IPL_DEPTH_16U
IPL_DEPTH_16S
IPL_DEPTH_32S
IPL_DEPTH_32F
IPL_DEPTH_64F
channels为每个像素的通道数,可以是1,2,3或4。通道是交叉排列的,一幅彩色
图像的通常的排列顺序是:
b0<wbr>g0<wbr>r0<wbr>b1<wbr>g1<wbr>r1<wbr>...</wbr></wbr></wbr></wbr></wbr></wbr>
例如:分配一个单通道单字节图像的语句是:
IpIImage* img1 = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 1);
分配一个三通道浮点数图像语句是:
IpIImage* img2 = cvCreateImage(cvSize(640, 480), IPL_DEPTH_32F, 3);
3.2 释放图像
void cvReleaseImage(IpIImage **);
3.3 复制一幅图像
IpIImage* cvCloneImage(IpIImage *);
如:
IpIImage* img1 = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 1);
IpIImage* img2;
img2 = cvCloneImage(img1);
3.4 设置或得到感兴趣区域ROI
void cvSetImageROI(IpIImage* image, cvRect rect);
void cvResetImageROI(IpIImage* image);
vRect cvGetImageROI(const IpIImage* image);
4. 图像的读写
4.1 从文件中获取图像
从文件中读取图像可以采用下面的语句:
IpIImage* img = 0;
img = cvLoadImage(filename);
if (!img)
<wbr>printf("Could not load image file: %s\n", filename);<br><wbr><br>
默认为读取三通道图像。如果改变设置则采用如下的方式:<br>
img = cvLoadImage(filename, flag);<br>
当flag > 0时,表示载入图像为3通道彩色图像;<br>
当flag = 0时,表示载入图像为单通道灰色图像;<br>
当flag < 0时,表示载入图像由文件中的图像通道数决定。</wbr></wbr>
5. 图像转换
5.1 将灰度图像转换为彩色图像
cvConvertImage(src, dst, flags = 0);
其中,src表示浮点(单字节)灰度(彩色)图像;
<wbr><wbr><wbr><wbr><wbr>dst表示单字节灰度(彩色)图像;<br><wbr><wbr><wbr><wbr><wbr>flags表示<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>+--- CV_CVTIMG_FLIP,<wbr><wbr><wbr>垂直翻转<br><wbr><wbr><wbr><wbr><wbr>flags = |<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>+--- CV_CVTIMG_SWAP_RB, 交换R和B通道<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><strong>5.2 将彩色图像转换为灰度图像</strong><br>
cvCvtColor(cimg, gimg, CV_RGB2GRAY);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
5.3 彩色空间的转换
cvCvtColor(src, dst, code);
其中code为:CV_<X>2<Y>,而<X>,<Y> = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS。
6. 绘制命令
绘图语句为:
cvRectangle, cvCircle, cvLine, cvPolyLine, cvFillPoly, cvInitFont, cvPutText。
【转】先把需要缩放的部分用cvcopy出来,cvresize,然后再cvcopy回去
cvSetImageROI(img, roi1);IPLImage tempimg= cvCreateImage(//size must be the resized image size//);cvResizeImage(img,rempimg....);cvSetImageROI(img,newroi);cvCopy(tempimg,img);
其实他把这个问题复杂化了,对指定部分缩放,首先要说明自己对哪个部分
感兴趣cvSetImageROI,通过这个函数,图像就仅仅剩下了ROI部分,然后
通过cvResize()把这个ROI区域按照自己的意愿放大缩小,我自己编程如下:
::cvSetImageROI(src,cvRect(src->width/4,src->height/4,src->width/2,src->height/2));
IplImage* temp=::cvCreateImage(cvSize(src->width,src->height),src->depth,src->nChannels);
::cvResize(src,temp);
::cvNamedWindow(wndName1,1);
::cvShowImage(wndName1,temp);
::cvWaitKey(0);
感兴趣区域为中间的区域,大小为原来的1/2,重新划分后感兴趣区域为原来
大小,搞定。
分享到:
相关推荐
《OpenCV图像处理编程实例》以OpenCV开源库为基础实现图像处理领域的很多通用算法,并结合当今图像处理领域前沿技术,对多个典型工程实例进行讲解及实现。全书内容覆盖面广,由基础到进阶,各个技术点均提供详细的...
这个“OpenCV图像处理-小案例实战课程配套PDF.7z”压缩包文件,显然包含了与OpenCV相关的实战课程材料,可能是教学课件、案例分析或练习题解等,对于学习OpenCV的人来说是一份宝贵的资源。 首先,OpenCV的基本概念...
本讲义主要讲述OpenCV图像处理的基础知识,包括图像处理简介、OpenCV简介、图像处理操作、图像特征提取与描述、视频操作等。 1. 图像处理简介 图像处理是从图像采集、图像处理到图像再现的整个过程。图像处理的...
在图像处理中,亮度调整是一项基本操作,用于改变图像的整体明暗程度。OpenCV提供了`addWeighted()`函数,通过给原始图像的每个像素添加一个权重来实现这一功能。例如,增加权重可以使图像变亮,减少权重则会使图像...
这个“Opencv图像处理经典例图”压缩包很可能包含了一些使用OpenCV进行图像处理操作的经典示例,其中"lena"是一个在计算机视觉领域非常著名的测试图像,通常用于展示和测试各种图像处理技术。 Lena图像源于1972年...
OpenCV(开源计算机视觉库)是一个强大的图像处理和计算机视觉框架,被广泛应用于图像分析、机器学习、深度学习等领域。...通过理解这些基本概念和操作,你可以创建出功能强大的图像处理软件,满足各种应用场景的需求。
总的来说,这个压缩包提供了学习和实践OpenCV图像处理的基础步骤,涵盖了基本的几何变换和滤波操作。通过这些示例,开发者可以了解如何在Python环境中利用OpenCV库进行图像处理,并以此为基础,进一步探索更复杂的...
"OpenCV图像处理编程实例+源代码 - 副本" 是一个资源包,提供了关于如何使用OpenCV进行图像处理的实际教程和源代码示例。在这个包中,你将找到"fireplace7fp"这样的案例,它可能是针对特定图像或场景的处理示例。 ...
总的来说,"VS2010+QT+opencv图像处理"项目是一个很好的起点,它将帮助初学者理解如何整合这些工具来构建一个功能完备的图像处理应用。通过实践,你将不仅掌握图像处理的基础知识,还能熟悉软件开发流程,包括界面...
这个“总结的OPENCV图像处理程序汇总”涵盖了OpenCV库中的多种核心功能和常见图像处理技术。以下是对这些知识点的详细解释: 1. **基本图像操作**:包括读取、显示和保存图像。OpenCV使用`imread()`函数读取图像,`...
通过理解并实现这些基本的图像处理算法,开发者可以深入掌握OpenCV库,为更复杂的应用场景,如图像分析、图像识别和机器学习等打下坚实基础。此外,OpenCV的跨平台特性使其在Windows、Linux、Mac OS等多种操作系统上...
本项目的标题“基于Python和PyQt5,实现OpenCV图像处理”,明确指出了它将结合这三种技术来实现图像处理的各个层面。在描述中,具体提及了以下几个关键技术点: 1. 基本图像处理:这是图像处理领域中最基础的部分,...
通过深入学习这些基本操作和函数,你将能够逐步从入门到精通,掌握OpenCV在数字图像处理中的应用。在实际项目中,你可以结合标签中的"数字图像处理"和"vc"标签,使用OpenCV在VC6.0中实现复杂的图像分析和处理算法,...
总之,通过这个"opencv图像处理实战案例",你将能够掌握如何使用Python和OpenCV实现各种图像处理效果。这些技巧不仅可以应用于创意图像编辑,还可以在更复杂的计算机视觉项目中发挥重要作用,比如物体识别、图像分割...
图像处理部分涵盖基础图像操作,如图像读取、显示、保存、滤波和边缘检测等,逐步引导读者掌握高级图像变换技术,如图像分割、特征提取和图像复原。视频分析部分则深入探讨视频捕捉、处理和分析技术,包括背景建模、...
这个压缩包中的"opencv图像处理常用完整示例代码总结分析.txt"文件应该包含了上述各种操作的详细代码示例,供学习者参考和实践。通过深入理解和实践这些代码,你能够熟练掌握OpenCV库,从而解决各种图像处理问题。...
【OpenCV图像处理工具详解】 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含了众多图像处理和计算机视觉的算法,被广泛应用于机器学习、深度学习以及人工智能领域。基于OpenCV...
总之,《OpenCV 图像处理和计算机视觉参考手册》涵盖了图像处理的各个方面,包括基础操作、几何变换、特征检测、物体检测、机器学习和深度学习应用。通过深入学习和实践,开发者可以利用OpenCV创建复杂的计算机视觉...
#### 二、OpenCV图像处理基础 ##### 2.1 基本概念 在使用OpenCV进行图像处理之前,我们需要了解一些基本的概念: - **图像**: OpenCV将图像视为一个多维数组,其中每个元素代表像素值。 - **灰度图像**: 每个像素...
本压缩包文件“c opencv图像处理代码”包含了一些使用C语言编写的OpenCV相关代码,可能涉及了图像的读取、显示、变换、滤波、特征检测等基本操作。 1. **C语言与OpenCV结合**: C语言是编程的基础,虽然它不如C++...