您的位置:首页 > 编程语言 > C语言/C++

c++ opencv 入门

2015-08-03 22:06 309 查看
//类型定义

CvPoint point(2, 3);

CvPoint2D32f point1(2, 3);

CvPoint3D32f point2(2, 3);

CvSize size(2, 3);

CvSize2D32f size1(2, 3);

CvRect rect(0, 0, 50, 50);

//mat使用

float x[3][4] = {1, 2, 3, 4, 5, 5, 6};

CvMat *mat = cvCreateMat(3, 4, CV_32FC1);

cvInitMatHeader(mat, 3, 4, CV_32FC1, x);

cvmSet(mat, 2, 3, 123);

for (int i = 0; i < 3; i++){

for (int j = 0; j < 4; j++){

printf("%f ", cvmGet(mat, i, j));

}

printf("\n");

}

CvMat *mat1 = cvCloneMat(mat);

cvReleaseMat(&mat1);

cvReleaseMat(&mat);

//图片使用

{

IplImage *ipl = cvLoadImage("E:\\4.bmp");

const string strWindowName = "123";

cvNamedWindow(strWindowName.c_str(), 1);

cvRectangle(ipl, CvPoint(0, 0), CvPoint(50, 50), Scalar(255, 0, 0), 1);

cvCircle(ipl, CvPoint(100, 100), 20, Scalar(0, 255, 0));

cvLine(ipl, CvPoint(50, 50), CvPoint(100, 100), Scalar(255, 0, 0));

{

CvFont font;

cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC, 1.0, 1.0, 0, 1);

cvPutText(ipl, "123", CvPoint(100, 100), &font, Scalar(255, 255, 0));

CvSize sizeFont;

int nBaseLine = 0;

cvGetTextSize("123", &font, &sizeFont, &nBaseLine);

printf("width = %d height = %d line = %d", sizeFont.width, sizeFont.height, nBaseLine);

}

{

//for (int i = 0; i < ipl->height; i++){

// for (int j = 0; j < ipl->width; j++){//打印图像元素

// CvScalar csa = cvGet2D(ipl, i, j);

// printf("(%f,%f,%f) ", csa.val[0], csa.val[1], csa.val[2]);

// }

// printf("\n");

//}

////反转图像

//CvScalar csa;

//int height = ipl->height;

//int width = ipl->width;

//int step = ipl->widthStep;

//int nChannels = ipl->nChannels;

//for (int i = 0; i < height; i++){

// for (int j = 0; j < width; j++){

// for (int k = 0; k < nChannels; k++){

// ipl->imageData[i*step + j*nChannels + k] = 255 - ipl->imageData[i*step + j*nChannels + k];

// }

// }

// printf("\n");

//}

}

IplImage *ipl1 = cvCreateImage(CvSize(ipl->width, ipl->height), ipl->depth, ipl->nChannels);

//IplImage *ipl2 = cvCreateImage(CvSize(ipl->width, ipl->height), IPL_DEPTH_8U, 1);

//cvConvertImage(ipl, ipl1, CV_CVTIMG_FLIP);//垂直翻转

//cvCvtColor(ipl1, ipl2, CV_RGB2GRAY);//将彩色图像转换成灰度图像, 与cvConvertImage不能共用,单独使用,可以看出效果

//cvSobel(ipl, ipl1, 1, 1, 5);

cvSmooth(ipl, ipl1, CV_BLUR, 3, 3, 0);

cvLaplace(ipl, ipl1, 3);

cvShowImage(strWindowName.c_str(), ipl1);

cvSaveImage("E:\\123.bmp", ipl1);

cvResizeWindow(strWindowName.c_str(), ipl1->width, 200);

waitKey(5000);

cvDestroyWindow(strWindowName.c_str());

cvReleaseImage(&ipl);

cvReleaseImage(&ipl1);

//cvReleaseImage(&ipl2);

}

IplImage *ipl3 = cvCreateImageHeader(CvSize(100, 100), IPL_DEPTH_8U, 3);

ipl3 = cvInitImageHeader(ipl3, CvSize(100, 100), IPL_DEPTH_8U, 3);

cvReleaseImageHeader(&ipl3);

CvMemStorage * memstorge = cvCreateMemStorage(100);

char strMemStorage[100] = "123123123";

CvString strTemp = cvMemStorageAllocString(memstorge, strMemStorage, strlen(strMemStorage));

printf("%s\n", strTemp.ptr);

cvClearMemStorage(memstorge);

CvMemStorage *pMem = cvCreateMemStorage(0);

CvSeq *seq = cvCreateSeq(CV_32FC1, sizeof(CvSeq), sizeof(float), pMem);

cvSetSeqBlockSize(seq, 800);

cvClearMemStorage(pMem);

const char *pstr = cvErrorStr(0);

printf("%s\n", pstr);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: