c++ opencv 入门

//类型定义
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);

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

原文链接: https://www.cnblogs.com/qq76211822/p/4711999.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++ opencv 入门

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/220101

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午10:47
下一篇 2023年2月13日 上午10:47

相关推荐