您的位置:首页 > 运维架构

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语言版
#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目录下。

解决方案
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: