- 浏览: 96097 次
- 性别:
- 来自: 西安
-
最新评论
文章列表
详细解释:help meshgrid
meshgrid用于从数组a和b产生网格。生成的网格矩阵A和B大小是相同的。它也可以是更高维的。
[A,B]=Meshgrid(a,b)
生成size(b)Xsize(a)大小的矩阵A和B。它相当于a从一行重复增加到size(b)行,把b转置成一列再重复增加到size(a)列。因此命令等效于:
A=ones(size(b))*a;
B=b'*ones(size(a))
如下所示:
>> a=[1:2]
a =
1 2
>> b=[3:5]
b =
3 4 5
>> [A,B]=meshgrid ...
- 2012-05-16 09:59
- 浏览 685
- 评论(0)
1.初始化矩阵:
方式一、逐点赋值式:
CvMat* mat = cvCreateMat( 2, 2, CV_64FC1 );
cvZero( mat );
cvmSet( mat, 0, 0, 1 );
cvmSet( mat, 0, 1, 2 );
cvmSet( mat, 1, 0, 3 );
cvmSet( mat, 2, 2, 4 );
cvReleaseMat( &mat );
方式二、连接现有数组式:
double a[] = { 1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12 };
CvMat mat = cvMat( ...
- 2012-05-15 17:32
- 浏览 628
- 评论(0)
打印一个3通道矩阵:
inline void cv3DoubleMatPrint( const CvMat* mat )
{
int i, j;
for( i = 0; i < mat->rows; i++ )
{
for( j = 0; j < mat->cols; j++ )
{
CvScalar scal = cvGet2D( mat, i, j );
printf( "(%f,%f,%f) ", scal.val[0], scal.val[1], scal.val[2] );
}
printf( "/n" ...
- 2012-05-15 17:32
- 浏览 359
- 评论(0)
目 录
1.初始化矩阵:. 1
2.IplImage 到cvMat的转换. 1
3.cvArr(IplImage或者cvMat)转化为cvMat 1
4.图像直接操作. 2
5.cvMat的直接操作. 3
6.间接访问cvMat 4
7.修改矩阵的形状——cvReshape的操作. 5
8.计算色彩距离. 7
OpenCV学习之CvMat的用法详解及实例
目 录
1.初始化矩阵:. 1
2.IplImage 到cvMat的转换. 1
3.cvArr(IplImage或者cvMat)转化为cvMat 1
4.图像直接操作. 2
5.cvMat的 ...
- 2012-05-11 17:12
- 浏览 564
- 评论(0)
注:clockwise=true 顺时针旋转
clockwise=false 逆时针旋转
IplImage* rotateImage(IplImage* src, int angle, bool clockwise)
{
angle = abs(angle) % 180;
if (angle > 90)
{
angle = 90 - (angle % 90);
}
IplImage* dst = NULL;
int width =
(double)(src->height * sin(angl ...
- 2012-05-11 17:05
- 浏览 709
- 评论(0)
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> ...
- 2012-05-11 11:20
- 浏览 419
- 评论(0)
一句话:CvScalar就是一个包含四个元素的结构体变量。
CvScalar定义可存放1—4个数值的数值,其结构如下。
typedef struct CvScalar
{
double val[4];
}
CvScalar;
------------------------------------------------
CvScalar pt;
如果使用的图像是1通道的,则pt.val[0]中存储数据
如果使用的图像是3通道的,则pt.val[0],pt.val[1],pt.val[2]中存储数据
==============================
cvGe ...
- 2012-05-10 21:01
- 浏览 680
- 评论(0)
OpenCV矩阵操作(二)
#include "stdafx.h"
/*
功能:说明矩阵的一些操作方法
*/
#include "cv.h"//该头文件包含了#include "cxcore.h"
#include "highgui.h"
#include <stdio.h>
void PrintMat(CvMat *A); // 显示矩阵
void Gen ...
- 2012-05-10 21:00
- 浏览 338
- 评论(0)
一句话:用这些画图函数在RGB图上画,则能画出来彩色。 如果您在灰度图上画 则无论怎么设置color都只能画出黑白两种颜色。
就这一句话搞了我一个晚上,惭愧!
Opencv绘图函数:http://www.opencv.org.cn/index.php/Cxcore%E7%BB%98%E5%9B%BE%E5%87%BD%E6%95%B0
- 2012-05-10 20:57
- 浏览 480
- 评论(0)
最初用opencv的cvNorm函数,发现结果错的一塌糊涂! 多方查找没有cvNorm太多的介绍,后来仔细查阅,从cvNorm等价于Matlab的norm函数出发寻找线索,而显然matlab里norm函数不同与diff函数,无奈自己封装吧。
CvMat* DiffMat(CvMat *B) //求向量B的一阶差分 功能等价matlab里的diff
{
int cols = B->cols;
CvMat*Out = cvCreateMat(1, cols-1, B->type);
const float*pB = (const float*)(B->data ...
- 2012-05-10 19:59
- 浏览 595
- 评论(0)
有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等
大多数函数支持ROI,如果图像ROI被设置,那么只处理ROI部分
少部分函数支持COI,如果COI设置,只处理感兴趣的通道
矩阵逻辑运算 void cvAnd(const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL);//
void cvAndS(const CvArr* src, CvScalar value, CvArr* dst, const CvArr* mask ...
- 2012-05-10 16:37
- 浏览 495
- 评论(0)
1、matlab中的imread相当于OpenCV中的cvLoadImage(imageName, CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR):读出的图像信息保持了原有图像的信息(包括通道信息和位深信息);
rgb2gray相当于cvLoadImage(imageName, CV_LOAD_IMAGE_GRAYSCALE):单通道灰度图;
或用cvCreateImage、cvCvtColor两函数实现图像的灰度化。
2、matlab中的zeros函数相当于OpenCV中的cvSetZero函数。
3、matlab中的两矩阵 ...
- 2012-05-10 14:19
- 浏览 1375
- 评论(0)
此次记录的是我移植的心酸历程!原帖在http://bbs.witech.com.cn/thread-14486-1-1.html,今将其贴到自己的博客里。
我现在在ubuntu11.10上,已经把qt-everywhere-opensource-src-4.8.1.tar编译好了,目录在/usr/local/arm/qt-embeded-arm-4.8.0,在相应的arm6410Ok板 ...
- 2012-05-09 11:07
- 浏览 598
- 评论(0)
很多时候要用v4l2采集视频帧数据,当点击按钮触发时,保存其中的一帧数据,然后用opencv进行处理。那么就需要将QImage转为IplImage了,我封装了一个简易函数,可以实现此功能,
第一个参数是你的QImage数据帧,是指针类型的;第二个数据是你的IplImage帧数据,要注意调用此函数前要cvCreateImage(cvSize(qimage->width,qimage->height), .........),创建IplImage,然后调用下面的函数就可以了。
void cvxCopyQImage(const QImage *qImage, IplImage *pIp ...
- 2012-05-08 15:51
- 浏览 730
- 评论(0)
编译时报错如下:
/usr/include/libavutil/common.h:168: 错误:'UINT64_C' was not declared in this scope
解决:
在common.h里面添加#ifndef UINT64_C
#define UINT64_C(value)__CONCAT(value,ULL)
#endif
视图如下:
- 2012-05-08 09:10
- 浏览 403
- 评论(0)