OpenCV 自定义任意区域形状及计算平均值 方差
2016-12-17 13:23
471 查看
opencv中有矩形的Rect函数、圆形的circl函数等,那么任意形状怎么取呢?方法1:点乘,将其形状与图像进行点乘,求其形状对应的图像形状;方法2:用findContours函数得对应的形状区域,其边缘显示类型可以通过设置参数可以控制;
方法1:点乘
对于一个区域,怎么进一步针对区域内部特征进行处理呢 ? 首先,我们要提取出来内部的某些特征才能说话,下面提取一些简单的特征,话不多说见代码:
1.平均数及方差参数:
方法1:点乘
1 //===============================对应灰度图的区域segImage============================================================== 2 // 遍历图像 对每个非零像素值赋值为对应灰度图的像素值 3 4 Mat zeroImage(Size(rioImage.cols, rioImage.rows), CV_8U, Scalar(0));//建立全0矩阵 5 for (int i = 0; i < closeImg.rows; i++)//行遍历 6 { 7 8 unsigned char* ptr = (unsigned char*)closeImg.data + closeImg.step*i; 9 10 for (int j = 0; j < closeImg.cols; j++)//列遍历 11 { 12 int intensity = ptr[j]; 13 if (intensity != 0) 14 15 { 16 zeroImage.at<uchar>(i, j) = rioImage.at<uchar>(i, j);//对应位置赋值为灰度图像素 17 } 18 } 19 } 20 21 zeroImage.copyTo(segImage); 22 //imshow("segImage.jpg", segImage); 23 //waitKey(0); 24 }
对于一个区域,怎么进一步针对区域内部特征进行处理呢 ? 首先,我们要提取出来内部的某些特征才能说话,下面提取一些简单的特征,话不多说见代码:
1.平均数及方差参数:
1 Mat tempMean, tempStddv; 2 double MEAN, STDDV;// mean and standard deviation of the flame region 3 double m = mean(flameRectRegion)[0]; 4 //cout << "mean=" << m << endl; 5 meanStdDev(flameRectRegion, tempMean, tempStddv); 6 7 MEAN = tempMean.at<double>(0, 0); 8 STDDV = tempStddv.at<double>(0, 0); 9 //cout << "mean=" << MEAN << endl; 10 //cout << "stddv=" << STDDV << endl;
相关文章推荐
- linux应用之apache的源码安装(centos)
- CentOS7安装NodeJS6.9
- Linux中使用SecureCRT上传、下载文件命令sz与rz用法实例
- ActiveMQ使用线程池实现消息的生产与消费
- Apache+Tomcat配置集群组
- 六大Web负载均衡原理与实现
- apache整合tomcat部署集群
- 【Linux Is Not Unix 】虚拟机下CentOS配置ip三种方法的区别
- Apache Curator入门实战
- CentOs7下安装mysql5.7.14,初始化完成登录mysql提示密码过期
- Docker 学习笔记
- Linux SSH 免密码登录
- 端游、手游服务端常用的架构是什么样的?
- 02 Apache Solr: 概览 Solr在信息系统架构中的位置
- VMWARE 占用硬盘空间只增大不减少的清理办法
- Linux 操作命令的简要介绍(12.11)
- Mac 运行sh文件,也就是传说中的shell脚本
- nginx配置反向代理示例
- linux下命令行编译、执行java
- linux系统扩展php的zip模块