Opencv学习笔记(三):图像的使用与操作_颜色空间的变换
2013-12-09 22:01
971 查看
图像的使用与操作_颜色空间的变换
Last Edit 2013/12/9
这个笔记里主要要介绍几个常用的图像操作函数。因为现在参考的资料还是以前的版本,不过对于入门来说已经不错了。后续自然会转到c++版本上来,毕竟这是个基础呀~~~
1)在内存中分配一幅图像存储空间:IplImage*cvCreateImage(CvSize size,int depth,int channels);
size:当然是表示为这个图像分配的大小了,可以手动指定大小,如cvSize(720,480),也可以用
cvGetSize(const CvArr*)函数来获得大小;
depth:是图像数据的深度了,IPL_DEPTH_8U等
channels:表示通道数
2)载入一幅图像:IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
#define CV_LOAD_IMAGE_UNCHANGED -1 表示原图载入
#define CV_LOAD_IMAGE_GRAYSCALE 0 表示载入图片变成单通道
#define CV_LOAD_IMAGE_COLOR 1 表示载入图片变成3通道
#define CV_LOAD_IMAGE_ANYDEPTH 2
#define CV_LOAD_IMAGE_ANYCOLOR 4
当flags<0时,载入后的图像的通道由原通道决定
当flags=0时,载入后的图像的通道被强制转为单通道
当flags>0时,载入后的图像的通道被强制转为3通道
3)将彩色图转为灰度图:void cvCvtColor( const CvArr* src, CvArr* dst, int code )
code:CV_BGR2GRAY /CV_GRAY2BGR/CV_BGR2HSV
4)若我们要把变换后的图像保存下来的话:int cvSaveImage( const char* filename, const CvArr* image );
下面用一段代码来使用一下这几个函数:C语言版
Opencv2,C++版
若在调试过程中出现如下错误:
..
方法一:下载tbb3.0,解压后, 在其..\bin\ia32\vc9中找到tbb_debug.dll 将其拷贝到 OpenCV的存放目录中的..\OpenCV2.3.1\build\common\tbb\ia32\vc9(注:OpenCV2.3.1是解压目录,可能取名不同,默认是opencv)
重新编译程序,试试效果,如果不能解决,那可能是环境变量遗漏配置了,请检查环境变量(计算机-->属性-->高级系统设置-->系统属性窗口(切换到高级选项卡)-->环境变量)中是否配置了对应的..\OpenCV2.3.1\build\common\tbb\ia32\vc9
方法一的替代方案:如果不想下载,可以到OpenCV存目录中的..\OpenCV2.3.1\build\common\tbb\ia32\vc9找到tbb.dll,复制黏贴,然后重命名为tbb_debug.dll(呵呵,算是一个不错的方法吧)
方法二:在方法一及替代方法解决不了的情况下,可以将tbb_debug.dll(文件来源的方法一或其替代方案)拷贝到..\OpenCV2.3.1\build\x86\vc9\bin目录下。
解决方案
Last Edit 2013/12/9
这个笔记里主要要介绍几个常用的图像操作函数。因为现在参考的资料还是以前的版本,不过对于入门来说已经不错了。后续自然会转到c++版本上来,毕竟这是个基础呀~~~
1)在内存中分配一幅图像存储空间:IplImage*cvCreateImage(CvSize size,int depth,int channels);
size:当然是表示为这个图像分配的大小了,可以手动指定大小,如cvSize(720,480),也可以用
cvGetSize(const CvArr*)函数来获得大小;
depth:是图像数据的深度了,IPL_DEPTH_8U等
channels:表示通道数
2)载入一幅图像:IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
#define CV_LOAD_IMAGE_UNCHANGED -1 表示原图载入
#define CV_LOAD_IMAGE_GRAYSCALE 0 表示载入图片变成单通道
#define CV_LOAD_IMAGE_COLOR 1 表示载入图片变成3通道
#define CV_LOAD_IMAGE_ANYDEPTH 2
#define CV_LOAD_IMAGE_ANYCOLOR 4
当flags<0时,载入后的图像的通道由原通道决定
当flags=0时,载入后的图像的通道被强制转为单通道
当flags>0时,载入后的图像的通道被强制转为3通道
3)将彩色图转为灰度图:void cvCvtColor( const CvArr* src, CvArr* dst, int code )
code:CV_BGR2GRAY /CV_GRAY2BGR/CV_BGR2HSV
4)若我们要把变换后的图像保存下来的话:int cvSaveImage( const char* filename, const CvArr* image );
下面用一段代码来使用一下这几个函数:C语言版
#include <cv.h> #include<highgui.h> #include<stdio.h> int main() { const char *filename="D:\\07Personal files\\headpicture.jpg"; //指定读取图像的路径 const char *wndNameColor="OrginalPicture"; //窗口的名字:显示原图像的窗口 const char *wndNamegray="grayPicture"; //窗口的名字:显示变换后像的窗口 IplImage *src_image=cvLoadImage(filename,CV_LOAD_IMAGE_COLOR); //载入图像 IplImage *dst_mage=cvCreateImage(cvGetSize(src_image),src_image->depth,1);//分配一个新的图像空间 cvCvtColor(src_image,dst_mage,CV_BGR2GRAY); cvShowImage(wndNameColor,src_image); //显示 cvShowImage(wndNamegray,dst_mage); cvWaitKey(0); //等待输入 cvReleaseImage(&src_image); cvReleaseImage(&dst_mage); cvDestroyWindow(wndNameColor); cvDestroyWindow(wndNamegray); return 0; }
Opencv2,C++版
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" using namespace cv; using namespace std; int main() { Mat image=imread("D:\\07Personal files\\headpicture.jpg"); Mat grayImage; cvtColor(image,grayImage,CV_BGR2GRAY); namedWindow("orginalpic"); namedWindow("graypic"); imshow("orginalpic",image); imshow("graypic",grayImage); waitKey(0); return 0; }
若在调试过程中出现如下错误:
Win7、VS2008、OpenCV2.3.1 出现:“无法启动此程序,因为计算机中丢失tbb_debug.dll.尝试重新安装该
..方法一:下载tbb3.0,解压后, 在其..\bin\ia32\vc9中找到tbb_debug.dll 将其拷贝到 OpenCV的存放目录中的..\OpenCV2.3.1\build\common\tbb\ia32\vc9(注:OpenCV2.3.1是解压目录,可能取名不同,默认是opencv)
重新编译程序,试试效果,如果不能解决,那可能是环境变量遗漏配置了,请检查环境变量(计算机-->属性-->高级系统设置-->系统属性窗口(切换到高级选项卡)-->环境变量)中是否配置了对应的..\OpenCV2.3.1\build\common\tbb\ia32\vc9
方法一的替代方案:如果不想下载,可以到OpenCV存目录中的..\OpenCV2.3.1\build\common\tbb\ia32\vc9找到tbb.dll,复制黏贴,然后重命名为tbb_debug.dll(呵呵,算是一个不错的方法吧)
方法二:在方法一及替代方法解决不了的情况下,可以将tbb_debug.dll(文件来源的方法一或其替代方案)拷贝到..\OpenCV2.3.1\build\x86\vc9\bin目录下。
解决方案
相关文章推荐
- opencv学习笔记-2,图像颜色空间转换
- OpenCv学习笔记(六)----图像空间缩减,OpenCv中的计时函数和OpenCv中操作图像单个像素点的方法
- OpenCV 学习笔记 ----图像的基本操作(二)
- 【OpenCV学习笔记 017】图像颜色分布直方图
- opencv学习笔记(一):基于YCrCb颜色空间的肤色检测
- opencv学习笔记(2017年8月21日)之图像腐蚀操作
- OpenCV学习笔记(3)——图像形态学操作(Mathematical Morphology)
- c# opencvsharp学习笔记(3)兴趣区域ROI,图像叠加,操作像素点
- opencv3学习笔记1--图像的基本操作
- 【基于C++和Python的Opencv3学习笔记之颜色空间缩减、ROI提取及多通道分离合并】
- OpenCV学习笔记一:图像基础操作
- OPENCV学习笔记2-2_图像遍历(使用指针)
- OpenCV学习笔记_图像扭曲及旋转操作
- 【OpenCV学习笔记】【函数学习】五(颜色空间转换cvCvtColor()函数)
- Opencv学习笔记(四)--图像处理平滑,锐化操作
- OpenCV学习笔记(8)VS2008 MFC下使用OpenCV2.0进行简单图像处理
- opencv学习笔记1:矩阵和图像基本操作
- 基础学习笔记之opencv(20):OpenCV中的颜色空间(ing...)
- OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc
- 学习笔记TF015:加载图像、图像格式、图像操作、颜色