- 博客(101)
- 资源 (2)
- 收藏
- 关注
原创 在未安装opencv的电脑上,调用库
1、include文件夹和lib文件夹放的位置2、dll文件放置位置(Debug版本就需要在Debug文件夹中添加对应的Debug版dll)3、添加include库4、添加lib库5、添加lib文件(Debug版本就需要在Debug下添加对应的Debug版lib)
2014-11-25 15:18:06 971
原创 调用opencv的detectMultiScale函数时报错
我拿detectMultiScale()函数来进行我指定训练好的类别检测时,发现程序会异常,跳转到free.c文件里去,如果把这句屏蔽掉就没有,我知道问题出在这里了,可是怎么调用强大的opencv会有这样的问题呢,怎么会怎么会???因为我改写了detectMultiScale()函数,加了mask,没有涉及到内存的问题啊,后来在网上搜,发现也有人碰到,http://www.aichengxu.
2014-11-25 10:55:44 4546 1
转载 系统时间
1、CTime在CTime获取当前的时间,一般用CTime tm = CTime::GetCurrentTime();来获取当前的时间。然后通过tm 可以读取到各种各样的时间。如果想计算两个时间段之间的时间差,可以使用 CTimeSpan span = end - tm; 获取到从tm 到end 之间的时间。可以通过span 获取到这段时间经历的秒数,等等。span.GetTotalSe
2014-10-22 11:04:51 2112
原创 正式使用opencv里的训练和检测 - opencv_createsamples、opencv_traincascade-2.4.11版本
直接教你怎么用opencv的训练器,以及怎么检测
2014-09-12 14:06:19 51999 38
原创 创建空白图像
IplImage *temp_quad=cvCreateImage(cvGetSize(show_img1),8,1); for (int i=0;iheight;i++) for (int j=0;jwidth;j++) { cvSet2D(temp_quad,i,j,cvScalar(255)); } //将四点连线画出 for(int i=0;i<4;
2012-05-30 21:40:09 1616
原创 关于cvContourArea
对于序列,仅能针对多边形,或者构成一个连续的不连续会出现bug的,shapedescr.cpp有说明 if( CV_IS_SEQ( array )) { contour = (CvSeq*)array; if( !CV_IS_SEQ_POLYLINE( contour )) CV_Error( CV_StsBadArg
2012-05-30 15:24:27 4324 1
原创 创建空白图像
//创建空白图像 IplImage *temp_quad=cvCreateImage(cvGetSize(Background1_img),8,1); for (int i=0;iheight;i++) for (int j=0;jwidth;j++) { cvSet2D(temp_quad,i,j,cvScalar(255)); }
2012-05-21 20:17:56 2349
原创 两点确定直线方程
void get_line(CvPoint2D32f pt_a,CvPoint2D32f pt_b,float &A,float &B,float &C){ if(pt_a.x!=pt_b.x) { A=(pt_b.y-pt_a.y)/(pt_b.x-pt_a.x); B=-1; C=pt_a.y-k*pt_a.x; } else { A=1;
2012-05-21 10:45:42 3208
原创 关于CvMoments的一些剖析
#include "cv.h" #include "highgui.h" #include "cvaux.h"#include "cxcore.h"#include #include using namespace std;using namespace cv;void main(){ CvMemStorage* storage_r= cvCreateM
2012-05-21 10:11:01 4999 1
原创 任意点序列的外围正放着的矩形
CvMemStorage* storage_seq_a= cvCreateMemStorage(0); CvSeq* pt_seq_a= cvCreateSeq(CV_32SC2, sizeof(CvSeq), sizeof(CvPoint), storage_seq_a);//注意第一个参数,如果序列不会被传递给 任何使用特定序列的函数,那么将它设为 0,即某些函数要使用这个seq,但是该函
2012-05-17 15:25:10 1977
原创 得seq的重心
keypoint get_gravity_center(CvSeq* seq)//中心位置,与像素的值无关{ double m00, m10, m01; CvMoments moment; cvMoments(seq, &moment, 1); m00 = cvGetSpatialMoment( &moment, 0, 0 ); m10 = cvGetSpatialM
2012-05-17 10:06:56 793 1
原创 关于轮廓的各种使用
#include "cv.h" #include "highgui.h" #include "cvaux.h"#include "cxcore.h"#include #include using namespace std;using namespace cv;#define PI 3.14159fvoid DrawBox(CvBox2D box,IplIm
2012-05-17 08:32:58 3419 1
原创 cvSeqSort使用
static int near_num_cmp(void* _a,void* _b,void* userdata ){ pt_near* a =(pt_near*)_a; pt_near* b =(pt_near*)_b; return a->field_num>b->field_num ? -1 : a->field_numfield_num ? 1:0;} cv
2012-05-17 08:31:16 2373 1
原创 对所有提取到的轮廓画其重心
#include "cv.h" #include "highgui.h" void main( ) { IplImage* src; CvMoments moments; CvMat *region; CvPoint pt1,pt2; double m00 = 0, m10, m01, mu20, mu11, mu02, inv_m00; dou
2012-05-14 17:30:10 1487
原创 在灰度图像上划线
两种办法1。是生成3通道的图象,每个通道都一样,这样看起来也是灰度图,好处是可以在其上画彩色图象2。直接画,这是要注意不要使用CV_RGB(255,255,0)之类的彩色要使用cvScalar(127)就可以,或是CV_RGB(127,127,127)
2012-05-14 16:44:19 2174
原创 判断点在直线的哪个区域
bool pt_in_positive(CvPoint pt,CvPoint input_pt1,CvPoint input_pt2){ double A,B,C; double k_t; k_t=input_pt2.x - input_pt1.x; if (k_t==0.) { A=1; B=0; C=input_pt1.x; } else
2012-05-10 21:11:39 877
原创 得到相交的四个点构成四边形
CvPoint cross_pts1[4]; CvPoint cross_pts2[4]; cross_pts1[0]=get_cross_pt(img1_choose_pts[0],img1_choose_pts[1],img1_choose_pts[2],img1_choose_pts[3]); cross_pts1[1]=get_cross_pt(img1_choose_pts[
2012-05-09 21:35:20 1609
原创 由1图得到在2图中的显示,但是不画出来
void on_mouse1( int event, int x, int y, int flags, void* ustc){ CvPoint choose_pt= {-1,-1}; CvPoint response_pt= {-1,-1}; CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5, 0
2012-05-09 20:13:29 534
原创 由两点确定的直线,得到与图边界的交点
//求一直线与图边界的交点bool get_cross_pt_with_pic(CvPoint input_pt1,CvPoint input_pt2,vector& cross_pt,IplImage* img){ if (input_pt1.x>=img->width||input_pt1.x=img->height ||input_pt2.x>=img->width||in
2012-05-09 20:09:52 1164
原创 提取图片中任意形状的区域
#include "cv.h"#include "highgui.h"#include #include IplImage* inpaint_mask = 0;IplImage* img0 = 0, *img = 0, *inpainted = 0;CvPoint prev_pt = {-1,-1};void on_mouse( int event, int x
2012-05-09 20:01:51 1150
原创 将矩形向外扩展一圈,但不超过图片的大小
void expand_rect(CvRect &rect,IplImage *img){ if (rect.x>5) {rect.x-=5;rect.width+=5;} else {rect.x=0;rect.width+=rect.x;} if (rect.y>5) {rect.y-=5;rect.height+=5;} else {rect.y=0;rect.h
2012-05-09 14:14:11 823
原创 求点序列的包围矩形
//针对点向量void get_range(point_distributed_list points_distributed,int &min_x,int &min_y,int &max_x,int &max_y){ min_x=min_y=max_x=max_y=0; bool min_flag=1; point_distributed_list::iterator pt=po
2012-05-09 14:12:22 705
原创 求数组的方差
float get_variance(float*a,int n){ float mean,sum1=0; int i; for(i=0;i<=n-1;i++) { sum1+=a[i]; } mean=sum1/n; float variance,sum2=0; for (i=0;i<=n-1;i++) { sum2+=(a[i
2012-05-09 14:11:14 2098
原创 根据是否有领域点来判断点是否孤立
void mark_sparse_flag(point_distributed_list &points_distributed){ point_distributed_list::iterator pt=points_distributed.begin(); for(;pt!=points_distributed.end();pt++) { CvRect rect;
2012-05-09 14:09:39 617
原创 根据点序列的分布来判断点是否孤僻
//根据点序列的分布来判断点是否孤僻void mark_sparse_flag(point_distributed_list &points_distributed){ int max_x,min_x,max_y,min_y; get_range(points_distributed,min_x,min_y,max_x,max_y); int bin=5;//单区间的大小
2012-05-09 14:08:57 535
原创 pt_in_rect
bool pt_in_rect(CvPoint pt,CvRect rect){ if( pt.x>=rect.x && pt.x=rect.y && pt.y<=(rect.y+rect.height) ) return true; else return false; }
2012-05-09 14:06:07 499
原创 解超定方程
float* fInit1DPointer(int num){ register int i; float* p = new float[num]; for(i=0; i<num; i++) { p[i]=0.0f; } return(p);}float** fInit2DPointer(int row,int col){ regist
2012-05-08 14:19:29 1796
原创 解超定方程求透视矩阵
float* fInit1DPointer(int num){ register int i; float* p = new float[num]; for(i=0; i<num; i++) { p[i]=0.0f; } return(p);}float** fInit2DPointer(int row,int col){ regist
2012-05-08 11:19:22 1372
原创 动态分配和释放一、二维数组
分配:double **a=new double *[2*numPoints]; for(int i = 0; i a[i] = new double[8]; double *b =new double[2*numPoints];释放:for(int i = 0; i { delete [8]a[i]; a[i]=NULL; }
2012-05-08 11:16:48 956
原创 由对应四点求透视投影矩阵
void get_H_matrix(matchingslist matchings,CvMat* H_Mat1,CvMat* H_Mat2){ CvPoint2D32f *points1=new CvPoint2D32f[4]; CvPoint2D32f *points2=new CvPoint2D32f[4]; matchingslist::iterator ptr = m
2012-05-08 10:31:08 2175
原创 解线性超定方程
int numPoints=10;double **a=new double *[2*numPoints]; for(int i = 0; i a[i] = new double[8]; double *b =new double[2*numPoints]; CvMat A = cvMat (2*numPoints,8, CV_64F, a); CvMat B = cv
2012-05-08 10:22:58 1219
原创 透视投影变换
* c00*xi + c01*yi + c02 * ui = --------------------- * c20*xi + c21*yi + c22 * * c10*xi + c11*yi + c12 * vi = --------------------- * c20*xi + c21*yi + c22(xi,yi)为图1的
2012-05-07 21:49:31 928
转载 C++下基本数据类型所占位数和取值范围
char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 Bytes)int
2012-05-03 17:21:20 1981
原创 32位与64位系统
x86代表32位操作系统 x64代表64位操作系统.计算机处理器在RAM(随机存取储存器)处理信息的效率,取决于32位和64位版本Windows。64位版本比32位的可以处理更多的内存和应用程序。比较32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据。如果我们将总长128位的指令分别按照16位、32位、64位为单位进行编辑
2012-05-03 16:58:36 764
转载 关于main函数的作用与标准格式
C的设计原则是把函数作为程序的构成模块。main()函数称之为主函数,一个C程序总是从main()函数开始执行的。 一、main()函数的形式 在最新的 C99 标准中,只有以下两种定义方式是正确的: int main( void )--无参数形式 { ... return 0;
2012-05-03 16:22:53 2127
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人