【opencv练习37 - 多边形阴影绘制】
来源:互联网 发布:算法导论第四章答案 编辑:程序博客网 时间:2024/06/05 05:11
/******************************************************************* 测试程序 【多边形阴影绘制】 时间:2016年9月3日********************************************************************/int main( void ){ //【0、创建图像】 const int r = 100; Mat src = Mat::zeros( Size( 4*r, 4*r ), CV_8UC1 ); //【创建点序列】 Create a sequence of points to make a contour: vector<Point2f> vert(6); vert[0] = Point( 3*r/2, static_cast<int>(1.34*r) ); vert[1] = Point( 1*r, 2*r ); vert[2] = Point( 3*r/2, static_cast<int>(2.866*r) ); vert[3] = Point( 5*r/2, static_cast<int>(2.866*r) ); vert[4] = Point( 3*r, 2*r ); vert[5] = Point( 5*r/2, static_cast<int>(1.34*r) ); //【0,绘制源文件】 for( int j = 0; j < 6; j++ ) { line( src, vert[j], vert[(j+1)%6], Scalar( 255 ), 3, 8 ); } //【0,获取轮廓】 Get the contours vector<vector<Point> > contours; vector<Vec4i> hierarchy; Mat src_copy = src.clone(); //备份src findContours( src_copy, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE); // 【1、计算每一点到轮廓的距离检查点是否在轮廓内】 // 有选择的计算某一点到contour轮廓边界的【正负距离】 Mat raw_dist( src.size(), CV_32FC1 ); //原始距离【Mat】存储计算得到的距离 for( int j = 0; j < src.rows; j++ ) { for( int i = 0; i < src.cols; i++ ) { raw_dist.at<float>(j,i) = (float)pointPolygonTest( contours[0], Point2f((float)i,(float)j), true ); } } double minVal; double maxVal; minMaxLoc( raw_dist, &minVal, &maxVal, 0, 0, Mat() ); minVal = abs(minVal); maxVal = abs(maxVal); //【2、描绘,描画,距离图像化】 //【raw_dist ——> drawing 】 Mat drawing = Mat::zeros( src.size(), CV_8UC3 ); //初始化Mat for( int j = 0; j < src.rows; j++ ) { for( int i = 0; i < src.cols; i++ ) { if( raw_dist.at<float>(j,i) < 0 ) { drawing.at<Vec3b>(j,i)[0] = (uchar)(255 - abs(raw_dist.at<float>(j,i))*255 / minVal); } else if( raw_dist.at<float>(j,i) > 0 ) { drawing.at<Vec3b>(j,i)[2] = (uchar)(255 - raw_dist.at<float>(j,i)*255 / maxVal); } else { drawing.at<Vec3b>(j,i)[0] = 255; drawing.at<Vec3b>(j,i)[1] = 255; drawing.at<Vec3b>(j,i)[2] = 255; } } } //【显示】 imshow( "Source", src ); imshow( "Distance", drawing ); waitKey(0); return(0);}
0 0
- 【opencv练习37 - 多边形阴影绘制】
- OpenCV | 绘制多边形
- opencv绘制多边形
- python opencv绘制多边形和多边形填充
- OpenCV学习——多边形绘制
- opencv学习笔记7 绘制多边形
- Opencv用鼠标绘制填充多边形
- 【opencv练习10 - 基础绘制】
- 绘制多边形
- 绘制多边形
- 多边形绘制
- 绘制多边形
- 绘制多边形
- 绘制多边形
- 【JAVA语言程序设计基础篇】--图形--练习绘制多边形
- opencv-线,椭圆,长方形(矩形),圆,填充多边形绘制
- 【opencv练习11 - 随机绘制自定义图形】
- OpenGL ES 绘制多边形
- CSS3 transition属性和Hover效果
- 网易2017校园招聘笔试题 买苹果
- 顺序表应用5:有序顺序表归并
- 二分法,互动(猜长方形,cf 713B)
- LibGdx文档译读(十二) InputEventQueue类
- 【opencv练习37 - 多边形阴影绘制】
- BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排 状压DP
- HTTP协议
- 【神经网络与深度学习】基于Windows+Caffe的Minst和CIFAR—10训练过程说明
- 第三周项目四--顺序表的应用问题2
- 从源码角度看Volley中图片加载ImageLoader的重复URL过滤功能
- JS-鼠标长按触发事件
- caffe学习笔记-深度网络优化过程中loss=nan
- Java异常处理和设计