基本opencv2处理方法(二)
2016-07-19 19:36
225 查看
使用filter2D进行邻域计算:
result.row(0).setTo(Scalar(0)); 可以将result矩阵的第0行所有像素全部设置为0。
算术操作:
opencv重载了很多操作符:
你可以直接对它们进行运算,比如:
float weight ;
Mat mat1,mat2,mat3;
mat3 = weight*mat1+mat2。
这都是支持的,可以直接运算。
定义感兴趣区域:
opencv2和opencv1矩阵类型之间的转换。
Mat matImage = imread(“1.jpg”,1);
IplImage image = matImage;
IplImage* ptr_image = &(IplImage)matImage;
ptr_image = &matImage.operator IplImage();
Mat mat(ptr_image,false/true);
画直方图:
void shape2D(const Mat& image,Mat& result) { Mat kernel(3,3,CV_32FC1,Scalar(0));//3*3 1通道向量 kernel.at<float>(1,1) = 5.0; kernel.at<float>(0,1) = -1.0; kernel.at<float>(1,0) = -1.0; kernel.at<float>(1,2) = -1.0; kernel.at<float>(2,1) = -1.0; filter2D(image,result,image.depth(),kernel); } //main函数调用 { Mat imageFilter = imread("1.jpg",1); Mat filterResult; filterResult.create(imageFilter.size(),imageFilter.type()); shape2D(imageFilter,filterResult); namedWindow("FilterResult"); imshow("FilterResult",filterResult); }
result.row(0).setTo(Scalar(0)); 可以将result矩阵的第0行所有像素全部设置为0。
算术操作:
opencv重载了很多操作符:
你可以直接对它们进行运算,比如:
float weight ;
Mat mat1,mat2,mat3;
mat3 = weight*mat1+mat2。
这都是支持的,可以直接运算。
定义感兴趣区域:
Mat image; Mat imageROI = image(Rect(140,20,image.cols,image.rows));;
opencv2和opencv1矩阵类型之间的转换。
Mat matImage = imread(“1.jpg”,1);
IplImage image = matImage;
IplImage* ptr_image = &(IplImage)matImage;
ptr_image = &matImage.operator IplImage();
Mat mat(ptr_image,false/true);
画直方图:
//直方图的部分 int _tmain(int argc, _TCHAR* argv[]) { Mat image = imread("1.jpg",0); //0 表示取一通道,灰度图像 1表示彩色图像 if (!image.data) { return 0; //error } MatND hist; int dims = 1; float hranges[] = {0,255}; const float* ranges[] ={ hranges};//范围值 这里需要为const类型 int size = 256; int channels = 0; calcHist(&image,1,&channels,Mat(),hist,dims,&size,ranges); int scale = 1; Mat imageShow(size*scale,size,CV_8U,Scalar(0)); //获得最大值和最小值 double minVal = 0; double maxVal = 0; minMaxLoc(hist,&minVal,&maxVal,0,0); int hpt = saturate_cast<int>(0.9*size); for (int i=0;i<256;i++) { float value = hist.at<float>(i); int realValue = saturate_cast<int>(value*hpt/maxVal); rectangle(imageShow,Point(i*scale,size-1),Point((i+1)*scale-1,size - realValue),Scalar(255)); } namedWindow("showImage"); imshow("showImage",imageShow);
相关文章推荐
- Windows Ubuntu双系统安装日志
- OpenLDAP学习笔记
- 图解tomcat
- Hive Hadoop 解析 orc 文件
- Proguard中optimize设置不当引发SimException
- 为什么Linux内存使用率吃紧 【转】
- Docker 系列之 Linux 下安装篇
- Hadoop Shell命令
- 七 OpenGL ES 2.0 渲染流程整理
- hadoop命令详解
- Codis的架构设计
- Proguard中optimize设置不当引发SimException
- zabbix 掌上运维
- CentOS 7.2新增物理磁盘以及使用parted对齐分区以得到最优性能
- Linux进程间通信——使用匿名管道
- 比较好的开发博客和网站(更新中。。。)
- Hive运维记之——补分区表数
- Linux进程间通信——使用命名管道
- OSX Eclipse Neon无法添加Tomcat 8.5.3运行环境的解决办法
- Linux进程间通信——使用消息队列