各种小程序代码

void COpenCV::OnOpencvCvcanny()
{// TODO:  在此添加命令处理程序代码IplImage* imgColor = cvLoadImage("C:\\Users\\Administrator\\Desktop\\159.jpg", 0);IplImage* contoursImage = cvCreateImage(cvSize(imgColor->width, imgColor->height), 8, 1);IplImage* img = cvCreateImage(cvSize(imgColor->width, imgColor->height), 8, 1);IplImage* imgmid = cvCloneImage(imgColor);CvSeq* contours = 0;//提取图像img的轮廓信息cvCanny(imgmid, img, 80, 180, 3);//cvSaveImage("midimg/Canny.jpg", img);cvNamedWindow("image", 1);cvShowImage("image", imgColor);cvNamedWindow("contours", 1);cvShowImage("contours", img);cvWaitKey(0);cvSaveImage("C:\\Users\\Administrator\\Desktop\\cvCanny.jpg", img);//cvReleaseMemStorage(&storage);cvReleaseImage(&img);cvReleaseImage(&contoursImage);cvReleaseImage(&imgColor);}void COpenCV::OnOpencvHist()
{// TODO:  在此添加命令处理程序代码IplImage* src=cvLoadImage("D:\\18.jpg", 1);//Compute the HSV image and decompose it into separate planes.IplImage* hsv = cvCreateImage(cvGetSize(src), 8, 3);//rgb色彩空间转换到hsv色彩空间cvCvtColor(src, hsv, CV_BGR2HSV);cvNamedWindow("hsv", 1);cvShowImage("hsv", hsv);IplImage* h_plane = cvCreateImage(cvGetSize(src), 8, 1);IplImage* s_plane = cvCreateImage(cvGetSize(src), 8, 1);IplImage* v_plane = cvCreateImage(cvGetSize(src), 8, 1);IplImage*  planes[] = { h_plane, s_plane };//分割为单通道图像cvCvtPixToPlane(hsv, h_plane, s_plane, v_plane, 0);cvNamedWindow("h_plane", 1); cvShowImage("h_plane", h_plane); cvNamedWindow("s_plane", 1);  cvShowImage("s_plane", s_plane); cvNamedWindow("v_plane", 1); cvShowImage("v_plane", v_plane);//Build the histogram and copute its contents./** H 分量划分为30个等级,S分量划分为32个等级 */int h_bins = 30;int s_bins = 32;CvHistogram* hist;{int hist_size[] = { h_bins, s_bins };float h_ranges[] = { 0, 180 };        /* hue varies from 0 (~0°red) to 180 (~360°red again) */float s_ranges[] = { 0, 255 };         /* saturation varies from 0 (black-gray-white) to 255 (pure spectrum color) */float * ranges[] = { h_ranges, s_ranges };/* 创建直方图,二维, 每个维度上均分 */hist = cvCreateHist(2,                   // int dims  hist_size,        // int* sizes CV_HIST_ARRAY,// int typeranges,            // float** ranges 1                     //uniform);}//  根据H,S两个平面数据统计直方图 cvCalcHist(planes, hist, 0, 0);        //Compute histogram//归一化处理cvNormalizeHist(hist, 1.0);          //Normalize it//Creat an image to use to visualize our histogram.int scale = 10;IplImage* hist_img = cvCreateImage(cvSize(h_bins*scale, s_bins*scale),8,3);cvZero(hist_img);//populate our visualization with litter gray squares./** 获取直方图统计的最大值,用于动态显示直方图 */float max_value = 0;cvGetMinMaxHistValue(hist, 0, &max_value, 0, 0);for (int h = 0; h < h_bins; h++){for (int s = 0; s < s_bins; s++){float bin_val = cvQueryHistValue_2D(hist, h, s);int intensity = cvRound(bin_val * 255 / max_value);cvRectangle(hist_img,cvPoint(h*scale, s*scale),cvPoint((h + 1)*scale - 1, (s + 1)*scale - 1),CV_RGB(intensity, intensity, intensity),CV_FILLED);}}cvNamedWindow("Source", 1);cvShowImage("Source", src);cvNamedWindow("H-S Histogram", 1);cvShowImage("H-S Histogram", hist_img);cvWaitKey(0);
}void COpenCV::OnOpencvMatchtemplate()
{// TODO:  在此添加命令处理程序代码IplImage *src, *templ, *ftmp[6];  int i;//Read in the source image to be searched;if ((src = cvLoadImage("D:\\19.jpg", 1)) == 0){printf("Error on reading src image %s\n", "D:\\19.jpg");}//Read in the template to be used for matching:if ((templ = cvLoadImage("D:\\20.jpg", 1)) == 0){printf("Error on reading template image %s\n", "D:\\20.jpg");}//allocate output images:int iwidth = src->width - templ->width + 1; int iheight = src->height - templ->height + 1;for (i = 0; i < 6; i++){ftmp[i] = cvCreateImage(cvSize(iwidth, iheight), 32, 1);}//Do the matching of the template witch the image:for (i = 0; i < 6; i++){double min_val;double max_val;CvPoint min_loc;CvPoint max_loc;cvMatchTemplate(src, templ, ftmp[i], i);cvNormalize(ftmp[i], ftmp[i], 1, 0, CV_MINMAX);cvMinMaxLoc(ftmp[i], &min_val, &max_val, &min_loc, &max_loc, NULL);cvRectangle(src, cvPoint(min_loc.x, min_loc.y), cvPoint((min_loc.x + templ->width), (min_loc.y + templ->height)), CV_RGB(0, 255, 0), 1);}//DisplacvNamedWindow("Template", 0);cvShowImage("Template", templ);cvNamedWindow("image", 0);cvShowImage("image", src);cvNamedWindow("SQDIFF", 0);cvShowImage("SQDIFF", ftmp[0]);cvNamedWindow("SQDIFF_NORMED", 0);cvShowImage("SQDIFF_NORMED", ftmp[1]);cvNamedWindow("CCORR", 0);cvShowImage("CCORR", ftmp[2]);cvNamedWindow("CCORR_NORMED", 0);cvShowImage("CCORR_NORMED", ftmp[3]);cvNamedWindow("CCOEFF", 0);cvShowImage("CCOEFF", ftmp[4]);cvNamedWindow("CCOEFF_NORMED", 0);cvShowImage("CCOEFF_NORMED", ftmp[5]);
}void COpenCV::OnOpencvContours2()
{// TODO:  在此添加命令处理程序代码cvNamedWindow("box", 0);IplImage* img_8uc1 = cvLoadImage("C:\\Users\\Administrator\\Desktop\\159.jpg", CV_LOAD_IMAGE_GRAYSCALE);IplImage* img_edge = cvCreateImage(cvGetSize(img_8uc1), 8, 1);IplImage* img_8uc3 = cvCreateImage(cvGetSize(img_8uc1), 8, 3);cvThreshold(img_8uc1, img_edge, 128, 255, CV_THRESH_BINARY);CvMemStorage* storage = cvCreateMemStorage();CvSeq* first_contours = NULL;int NC = cvFindContours(img_edge,storage,&first_contours,sizeof(CvContour),CV_RETR_LIST);int n = 0;printf("Total Contours Deleted:%d\n", NC);for (CvSeq* c = first_contours; c != NULL; c = c->h_next){cvCvtColor(img_8uc1, img_8uc3, CV_GRAY2BGR);cvDrawContours(img_8uc3,c,cvScalarAll(255),cvScalarAll(255),100);cvShowImage("box", img_8uc3);for (int i = 0; i < c->total; ++i){CvPoint* p = CV_GET_SEQ_ELEM(CvPoint, c, i);}cvWaitKey(0);n++;}cvCvtColor(img_8uc1, img_8uc3, CV_GRAY2BGR);cvShowImage("box", img_8uc3);cvNamedWindow("src", 0);cvShowImage("src", img_8uc1);cvNamedWindow("edge", 0);cvShowImage("edge", img_edge);cvWaitKey(0);cvDestroyAllWindows();cvReleaseImage(&img_8uc1);cvReleaseImage(&img_8uc3);cvReleaseImage(&img_edge);}void COpenCV::OnOpencvAddgaussiannoise()
{// TODO:  在此添加命令处理程序代码Mat image;image = imread("D:\\11.jpg", 1); // Read the file   if (!image.data) // Check for invalid input   {cout << "Could not open or find the image" << std::endl;}namedWindow("Display window", WINDOW_AUTOSIZE); // Create a window for display.   imshow("Display window", image); // Show our image inside it.   // Add Gaussian noise here   AddGaussian(image);namedWindow("Noisy image", WINDOW_AUTOSIZE); // Create a window for display.   imshow("Noisy image", image); // Show our image inside it.   waitKey(0); // Wait for a keystroke in the window   }void COpenCV::AddGaussian(Mat& I)
{// accept only char type matrices   CV_Assert(I.depth() != sizeof(uchar));int channels = I.channels();int nRows = I.rows;int nCols = I.cols * channels;if (I.isContinuous()){nCols *= nRows;nRows = 1;}int i, j;uchar* p;for (i = 0; i < nRows; ++i){p = I.ptr<uchar>(i);for (j = 0; j < nCols; ++j){double val = p[j] + generateGaussianNoise() * 128;if (val < 0)val = 0;if (val > 255)val = 255;p[j] = (uchar)val;}}}void COpenCV::OnOpencvTestnoise()
{// TODO:  在此添加命令处理程序代码}void COpenCV::OnOpencvCvboxpoints()
{// TODO:  在此添加命令处理程序代码//画缺陷的外接矩形IplImage *src = cvLoadImage("D:\\21.jpg", CV_LOAD_IMAGE_GRAYSCALE);CvMemStorage* storage = cvCreateMemStorage(0);CvSeq* contour = 0;cvNamedWindow("image0", 1);cvShowImage("image0", src);int   hei = src->height;int   wid = src->width;uchar *data = (uchar*)src->imageData;int widstep = src->widthStep;int channel = src->nChannels;IplImage *dst = cvCreateImage(cvSize(wid, hei), IPL_DEPTH_8U, 3);// invert the image  for (int i = 0; i<hei; i++){for (int j = 0; j<wid; j++){if (data[i*widstep + j*channel]>120){data[i*widstep + j*channel] = 0;}else{data[i*widstep + j*channel] = 255;}}}cvNamedWindow("image", 0);cvShowImage("image", src);printf("图像的高为:%d,宽为:%d\n\n", hei, wid);cvCvtColor(src, dst, CV_GRAY2BGR);;cvFindContours(src, storage, &contour, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);for (; contour != 0; contour = contour->h_next){CvBox2D rect = cvMinAreaRect2(contour, storage);CvPoint2D32f rect_pts0[4];cvBoxPoints(rect, rect_pts0);int npts = 4, k = 0;int aaa = 0, bbb = 0;CvPoint rect_pts[4], *pt = rect_pts;printf("连通区域最小外接矩形顶点坐标分别为:\n");for (int i = 0; i<4; i++){rect_pts[i] = cvPointFrom32f(rect_pts0[i]);printf("%d %d\n", rect_pts[i].x, rect_pts[i].y);aaa = (int)sqrt((pow((rect_pts[0].x - rect_pts[1].x), 2) + pow((rect_pts[0].y- rect_pts[1].y), 2)));bbb = (int)sqrt((pow((rect_pts[0].x - rect_pts[3].x), 2) + pow((rect_pts[0].y - rect_pts[3].y), 2)));if (aaa<bbb){k = aaa;aaa = bbb;bbb = k;}}printf("最小外接矩形的长为:%d宽为:%d。\n\n", aaa, bbb);cvPolyLine(dst, &pt, &npts, 1, 1, CV_RGB(255, 0, 0), 1);}cvNamedWindow("image5", 1);cvShowImage("image5", dst);cvWaitKey(0);cvDestroyWindow("image");cvDestroyWindow("image5");cvReleaseImage(&src);}void COpenCV::OnOpencv2Mythros()
{//获取单通道的值,并对像素进行处理// TODO:  在此添加命令处理程序代码IplImage* imgSource = cvLoadImage("C:\\Users\\Administrator\\Desktop\\no2.jpg",0);cvNamedWindow("Image", CV_WINDOW_AUTOSIZE);cvShowImage("Image", imgSource);if(imgSource != 0)//imgSource为IplImage*{for (int j = 0; j < imgSource->width; ++j){for (int i = 0; i < imgSource->height; ++i){//获取(i, j)处的单道图像像素值double dPixelVal = cvGetReal2D(imgSource, i, j);if (dPixelVal>51 && dPixelVal <= 102){//设定(i, j)处的单通道图像像素值cvSetReal2D(imgSource, i, j, 51);}}}}cvSaveImage("C:\\Users\\Administrator\\Desktop\\no2.jpg", imgSource);cvWaitKey(0);cvDestroyWindow("Image");cvReleaseImage(&imgSource);
}void COpenCV::OnOpencv2Cvavg()
{// TODO:  在此添加命令处理程序代码IplImage *src1 = cvLoadImage("C:\\Users\\Administrator\\Desktop\\no2.jpg");CvScalar cs,cs1;cvAvgSdv(src1,&cs,&cs1);    cout<<"平均值:"<<endl; cout<<cs.val[0] << endl;    cout<<cs.val[1] << endl;    cout<<cs.val[2] << endl;    cout<<cs.val[3] << endl;    cout <<endl;  cout <<"标准差"<<endl; cout<<cs1.val[0] << endl;   cout<<cs1.val[1] << endl;   cout<<cs1.val[2] << endl;   cout<<cs1.val[3] << endl;
}void COpenCV::OnOpencvImagematching()
{// TODO:  在此添加命令处理程序代码double dbMax = 0;                                       //最大像素值  double dSigmaST, dSigmaS, dSigmaT;                      //中间结果  double   R;                                             //相似性测量  int   i, j, m, n;int  nMaxWidth, nMaxHeight;CvScalar  pixelSrc, pixelTem, pixel0, pixel1;IplImage* TemplateSrc = cvLoadImage("D:\\20.jpg");        //模板图像  IplImage* src = cvLoadImage("D:\\24.jpg");                //原图  //计算dSigmaT  dSigmaT = 0;for (n = 0; n < TemplateSrc->height; n++){for (m = 0; m < TemplateSrc->width; m++){pixelTem = cvGet2D(TemplateSrc, n, m);dSigmaT += (double)pixelTem.val[0] * pixelTem.val[0];}}//找到图像中最大相似性出现的位置  for (j = 0; j < src->height - TemplateSrc->height + 1; j++){for (i = 0; i < src->width - TemplateSrc->width + 1; i++){dSigmaST = 0;dSigmaS = 0;for (n = 0; n < TemplateSrc->height; n++){for (m = 0; m < TemplateSrc->width; m++){pixelSrc = cvGet2D(src, j + n, i + m);pixelTem = cvGet2D(TemplateSrc, n, m);dSigmaS += (double)pixelSrc.val[0] * pixelSrc.val[0];dSigmaST += (double)pixelSrc.val[0] * pixelTem.val[0];}}R = dSigmaST / (sqrt(dSigmaS)*sqrt(dSigmaT));    //计算相似性  if (R > dbMax)         //与最大相似性比较  {dbMax = R;nMaxHeight = j;nMaxWidth = i;}}}//对目标像素进行赋值  for (j = nMaxHeight; j <TemplateSrc->height + nMaxHeight; j++){for (i = nMaxWidth; i < TemplateSrc->width + nMaxWidth; i++){pixel0 = cvGet2D(src, j, i);pixel1.val[0] = pixel0.val[0] / 2;pixel1.val[1] = pixel0.val[1] / 2;pixel1.val[2] = pixel0.val[2] / 2;cvSet2D(src, j, i, pixel1);}}cvNamedWindow("White", CV_WINDOW_AUTOSIZE);cvShowImage("White", src);while (1){if (cvWaitKey(100) == 27) break;}cvDestroyWindow("White");cvReleaseImage(&src);exit(0);
}

opencv各种小程序代码相关推荐

  1. python快递分拣小程序_python英语单词测试小程序代码实例

    这篇文章主要简介了python英语单词测试小程序代码实例,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 爬取了扇贝英语网,并制作了一个英语单词测试 ...

  2. 简单小程序代码_开个小程序店铺需要多少钱?

    大家都开发小程序了,自家也有个小本经营的店铺,为了能够有更多的客源,更大的销量,也想开个小程序,因为规模不算大,手头上资金也不是很充裕,所以开发小程序店铺需要多少钱就成为了第一步的考量,很多商家都不知 ...

  3. 简单小程序代码_小程序该如何运营

    小型程序升级有三种最重要的方法: 1.借助微信附近小程序功能实现客户扩展 大家可能都知道,微信平台具有附近小程序的功能.此功能使用户可以查看周围五公里范围内的所有小程序. 正是由于这个原因,一旦商人完 ...

  4. c++小程序代码_# 微信小程序的原生框架和taro对比 ##

    微信小程序的原生框架和taro对比 小程序历史(为什么会出现?) 2007年 iPhone H5 大家知道现在手机端主要是iOS.Android两大系统,实际上在早期有3大系统竞争,还有一个就是诺基亚 ...

  5. 微信小程序代码大于2M的一种解决方法

    今天,上传小程序代码到另一个微信号,提示代码尺寸过大,卧槽,我上传另一个微信h号都成功了呀!死活找不到原因,就大了270K左右,真是郁闷.偶然把灰级度调小,上传就可以了.估计是文件没压缩就上传,不明白 ...

  6. 皕杰报表之小程序代码质量检测

    最近在被云开发免费的份额,由于一些原因把小程序开发工具升级到了最新版本,新版本上传需要代码质量检测. 一.主包 其中按照官方说明需要提前知道的可优化项: 1. 代码包不包含插件大小超过 1.5 M [ ...

  7. c语言小程序作业,c语言小程序(c语言简单小程序代码)

    所以特此求经典C语言小程序.谢谢大家的关注!!! #include #include void function(int n){ int i,j,k,x=0; for(i=1;i<=n;i++) ...

  8. 微信小程序入门(四):miniprogram-ci + Jenkins + git 实现小程序代码的上传等操作

    目录 1. 实现要求 2. 实现方式一 2.1 Jenkins中其他配置这里不重复了,重点说构建部分的命令 2.2 Jenkins中运行构建任务,在小程序页面检查上传结果,没问题 3. 实现方式二 3 ...

  9. 自学Matlab必备的60个小程序代码

    自学Matlab必备的60个小程序代码 转载自:http://ishare.iask.sina.com.cn/f/9253907.html

  10. python3经典小程序代码_一个可以套路别人的python小程序实例代码

    python可以开发什么?谁有python小程序的源代码,...桌面程序,web都可以,还有比如现在讲的多的人工智能,神经网络源码可以去找一些开源代码,搜索一下,蛮多的. 分享python小程序代码练 ...

最新文章

  1. The way to Go(6): Go程序的基本结构和要素
  2. 【MDCC 2015】开源选型之Android三大图片缓存原理、特性对比
  3. Android 高级进阶之overdraw分析及解决
  4. 斯坦福大学机器学习第八课“神经网络的表示(Neural Networks: Representation)”
  5. vue商城项目开发:底部导航菜单(路由)
  6. js防止表单重复提交
  7. android 验证码
  8. Silverlight HTML5 Flash - RIA技术之三足鼎立
  9. linux 库的头文件安装在,“找不到jpeg的头文件或库文件”在Alpine Linux上安装枕头...
  10. Dual-arm cooperation and implementing for robotic harvesting tomato using binocular vision(摘西红柿机器人)
  11. 2011年度最佳开源软件:Bossie奖结果公布
  12. Java——标准异常
  13. [bzoj1468][poj1741]Tree_点分治
  14. Sniffer安全技术从入门到精通
  15. 14万程序员挑战过的算法趣题
  16. 一键抠图工具有哪些?这5款亲测好用
  17. 2021-07-08郝斌C语言笔记
  18. 木马病毒 与后门技术
  19. LiveZilla-最好的免费在线客服
  20. java itextPdf导出pdf

热门文章

  1. 教你彻底禁止暴风影音后门进程自己启动
  2. 使用powershell命令,为exchange 2007用户配置邮箱数据
  3. 02_SSM整合测试与系统间通信(Dubbo)
  4. BZOJ5216 [Lydsy2017省队十连测]公路建设
  5. uniapp中获取元素页面信息的方法
  6. for input string:是什么原因出现的_「汽车空调异味」周期性出现:原因是什么呢?...
  7. 苹果手机使用说明书_使用苹果手机怎么设置重要提醒事项?
  8. ApplicationContextAware使用理解
  9. 主席树入门+博客推荐
  10. spring-cloud-sleuth 和 分布式链路跟踪系统