opencv基本操作
来源:互联网 发布:linux怎么运行sh脚本 编辑:程序博客网 时间:2024/04/19 16:16
最基础的OpenCV是用C实现的,所以里面的各种抽象数据类型都是结构体。
2. 读取图像:
IplImage* image = cvLoadImage("1.jpg", CV_LOAD_IMAGE_COLOR);
CV_LOAD_IMAGE_COLOR表示读入的是彩色图像,这是个默认参数,不显示指定也行。
3. 创建图像对象:
CvSize imgSize = cvSize(100, 100);
IplImage* newImage = cvCreateImage(imgSize, IPL_DEPTH_8U, 3);
CvSize是OpenCV中的数据类型,通常用来表示图像尺寸(宽度和高度);
IPL_DEPTH_8U 表示图像的数据类型是无符号8位整数(正好能表示0~255);
3 表示图像是彩色图,通道数为3(RGB)。灰度图的话该值为1。
4. 获取图像参数:
int imgWidth = image->width; // 图像宽度
int imgHeight = image->height; // 图像高度
int depth = image->depth; // 图像数据类型
int nChannels = image->nChannels; // 图像颜色通道数(灰度图为1,彩色图为3或者4)
5. 获取图像的像素数据
char* imgData = image->imageData; // 指向存储图像实际像素数据的内存指针
int x, y;
// x, y initialization
uchar R = CV_IMAGE_ELEM(image, uchar, y, nChannels * x);
uchar G = CV_IMAGE_ELEM(image, uchar, y, nChannels * x + 1);
ucahr B = CV_IMAGE_ELEM(image, uchar, y, nChannels * x + 2);
CV_IMAGE_ELEM是一个宏,用于获取图像中指定位置的数据。不过令人比较无语的是,OpenCV没有提供直接获取RGB值的方法,RGB三个值各自在内存中的位置需要程序员自己计算(最后一个参数)。
不过据说OpenCV后面扩展的C++接口提供了相应功能。。。
6. 创建窗口用于显示图像
cvNamedWindow("Display", CV_WINDOW_AUTOSIZE);
cvShowImage("Display", image);
cvWaitKey(0);
frame = cvQueryFrame(capture);
// processing...
7. 读取视频并逐帧处理
CvCapture* capture = cvCreateFileCapture("1.avi");
IplImage* frame;
while(1){
}
CvCapture是视频对象;
cvCreateFileCapture从指定的文件路径创建视频对象,暂时知道的支持格式有avi和mov
cvQueryFrame从视频对象中顺序读取一帧
下面是几个Image Processing的相关操作:
1. RGB转HSV:
cvCvtColor(src_im, dst_im, CV_BGR2HSV);
2. Image Resize:
cvResize(src_im, dst_im);
3. 腐蚀和膨胀(默认的模板是3*3的矩阵):
cvErode(src_im, dst_im);
cvDilate(src_im, dst_im);
0 0
- OpenCV基本操作
- opencv基本操作
- opencv基本图像操作
- opencv基本操作
- OpenCV基本操作
- opencv Mat基本操作
- Opencv基本操作
- OpenCV基本操作学习
- opencv图像基本操作
- OpenCV | 基本操作API
- opencv基本操作(二)
- opencv基本操作(三)
- opencv基本操作四
- opencv基本操作(五)
- opencv基本操作(六)
- openCV矩阵基本操作
- OpenCV基本数据结构操作
- 【OpenCV】Mat基本操作
- jquery学习心得,常用的操作
- android JNI学习六
- cocos2dx-jsb 跨语言调用
- notepad++6.5中文绿色汉化版下载
- PB9核心之——数据窗口对象使用
- opencv基本操作
- Java判断给定日期哪个大,哪个小;日期类型:YYYY-MM-DD
- MTK android 可修改IMEI方法
- 多线程发送操作之一:运行一个线程的格式化代码(Specifying the Code to Run on a Thread)
- Java.util.Timer深入JDK代码及工作原理
- makefile $(filter PATTERN...,TEXT)
- Linux修改默认启动级别
- 保健品消费者需求调研内容及设计
- SpringMVC深入浅出入门教程