当前位置: 首页 > news >正文

wordpress网站程序网络推广培训在哪里

wordpress网站程序,网络推广培训在哪里,如何建淘客网站,网站建设的最新技术让我们继续一、OpenCV基本绘图1.1 OpenCV关于绘图的操作1.1.1 cv::Point()1.1.2 cv::Scalar()1.1.3 cv::line()画线1.1.4 cv::rectangle()画矩形1.1.5 cv::circle()画圆二、图像的平滑滤波处理2.1 概念2.2 OpenCV关于图像模糊的操作2.2.1 常用滤波器的分类2.2.2 各种滤波方法具… 让我们继续一、OpenCV基本绘图1.1 OpenCV关于绘图的操作1.1.1 cv::Point()1.1.2 cv::Scalar()1.1.3 cv::line()画线1.1.4 cv::rectangle()画矩形1.1.5 cv::circle()画圆二、图像的平滑滤波处理2.1 概念2.2 OpenCV关于图像模糊的操作2.2.1 常用滤波器的分类2.2.2 各种滤波方法具体的代码实现2.3 参考源码前文链接 【C的OpenCV】第四课-OpenCV图像常用操作一Mat对象深化学习、灰度、ROI 一、OpenCV基本绘图 1.1 OpenCV关于绘图的操作 1.1.1 cv::Point() // Point类型的源码来源 typedef Point2i cv::Point //规定cv::Point2i类型为cv::Pointtypedef Point_int cv::Point2i // 规定将cv::Point_int 类型为 cv::Point12i,最常用以此为例// 同理还存在typedef Point_float cv::Point2f 和 //typedef Point_double cv::Point2d// 实际上参考的类型为cv::Point_int,故在源码中我们要找到类模板 class cv::Point_ _Tp typedef _Tp value_type // 又将类模板中的类型_Tp 定为 value_type. // 这里我们讨论value_type为int的情况即cv::Point类型如果不理解多看上边几行转化逻辑关于cv::Point()的常用的构造函数         源码位置Point()类型的源码解释 Point_() :默认的构造函数 templatetypename _Tp cv::Point_ _Tp ::Point_( ) Point_() : 基于点xy轴坐标的构造函数 templatetypename _Tp cv::Point_ _Tp ::Point_( _Tp _x, _Tp _y ) //参数解释 1、_Tp _x : templatetypename _Tp_Tp cv::Point_ _Tp ::x 点point的x轴坐标2、_Tp _y :templatetypename _Tp_Tp cv::Point_ _Tp ::y 点Point的y轴坐标//以坐标创建一个点对象的示例//使用起来其实很简单关键是看懂源码对大家大有帮助//工具的使用和理解中我认为理解工具更重要所以为大家进行了源码解析。 //示例1 Point pt; pt.x 3; pt.y 4;//示例2 Point pt Point(3,4);Point_() :拷贝构造函数 cv::Point_ _Tp ::Point_ ( const Point_ _Tp pt ) // 参数解释 1、pt 为另外一个点对象且对象保证了传递对象过程中的安全性const修饰将另一个点的数据拷贝到新的点上。Point_() :根据Size对象来构造点 templatetypename _Tp cv::Point_ _Tp ::Point_ ( const Size_ _Tp sz ) // 参数解释 1、 sz一个Size对象同样保证传递安装性。 Template class for specifying the size of an image or rectangle.// 关于Size该类包括两个名为width和height的成员。// 该结构可以转换为旧的OpenCV结构CvSize和CvSize2D32f。 // 可以使用与Point_相同的一组算术和比较操作。1.1.2 cv::Scalar() // Scalar 类的由来和功能 // 由来 typedef Scalar_double cv::Scalar // Scalar类实际上就是Scalar_double类 // 其类模板为 templatetypename _Tp class cv::Scalar_ _Tp // 当_Tp为double类型时为Scalar()类 //从Vec派生的4元素向量的模板类。 //从Vec_Tp4导出Scalar_和Scalar可以用作典型的4元素向量。 //此外它们还可以转换为CvScalar或从CvScala转换。Scalar类型在OpenCV中广泛用于传递像素值。 关于cv::Scalar()的常用的构造函数         源码位置Scalar()类的构造函数 Scalar_()的构造函数 1、默认构造函数 templatetypename _Tp cv::Scalar_ _Tp ::Scalar_ () 2、四向量值构造函数 templatetypename _Tp cv::Scalar_ _Tp ::Scalar_ ( _Tp v0,_Tp v1,_Tp v2 0,_Tp v3 0 ) //这个构造函数和拷贝构造函数使用频率较高 //广泛使用它来表示BGR颜色值3个参数。如果不使用最后一个参数则无需定义最后一个参数。 //我们被要求一个颜色参数: Scalar( a, b, c ) //我们将定义一个BGR颜色如Blue aGreen b和Red c3、拷贝构造函数 templatetypename _Tp cv::Scalar_ _Tp ::Scalar_ ( const Scalar_ _Tp s ) 4、单值构造函数 templatetypename _Tp cv::Scalar_ _Tp ::Scalar_ ( _Tp v0 ) 5、Vec容器类构造函数 templatetypename _Tp templatetypename _Tp2 , int cn cv::Scalar_ _Tp ::Scalar_ ( const Vec _Tp2, cn v ) // _Tp2为通道数据类型cn为通道数。// 要论Scalar还有什么用途只要理解其本质“传递像素值”即可灵活使用。 1.1.3 cv::line()画线 函数原型 void cv::line ( InputOutputArray img,Point pt1,Point pt2,const Scalar color,int thickness 1,int lineType LINE_8,int shift 0 ) 参数解释 1、img 画在哪里即背景板是一个Mat对象或是InputOutputArray类型同类型即可 2、pt1、pt2划线的两个点划线原理是在两个点之间划线 3、color :Scalar类型的颜色描述例如Scalar( 255, 0, 0 ) 4、thickness线条的粗细这个自己根据画出来的情况调节即可 5、lineType线的类型下边展示类型的宏作为选择参考。 6、shift点坐标中的小数位数。0位没有小数位即整数。函数功能 绘制连接两点的线段。 函数线绘制图像中pt1和pt2点之间的线段。 线条由图像边界剪裁。对于具有整数坐标的非抗锯齿线 使用8连通或4连通Bresenham算法。粗线以圆角结尾绘制。 使用高斯滤波绘制抗锯齿线。关于线的类型的宏 实例 #include opencv2/core.hpp #include opencv2/imgproc.hpp #include opencv2/highgui.hpp #define w 400using namespace cv;void DrawLine( Mat img, Point , Point );// 划线函数前置声明int main( int argc, char* argv[] ){char windowName[] Drawing Window;//显示图像的窗口的名称Mat img Mat::zeros( w, w, CV_8UC3 );//长宽各400像素的8位3通道无符号的空白图像矩阵MyLine( img, Point( 0, w/2 ), Point( w/4, w/2 ) ); // 画一条位于图像y方向中间的水平线且长度为100像素imshow( windowName, img ); // 将图片显示在窗口中waitKey( 0 );return(0); }void DrawLine( Mat img, Point s, Point e ) {int lineThickness 3;int lineType LINE_8;line( img,s,e,Scalar( 0, 0, 0 ),lineThickness,lineType );//调用划线函数线的色彩为白色 }1.1.4 cv::rectangle()画矩形 函数原型 void cv::rectangle ( InputOutputArray img,Point pt1,Point pt2,const Scalar color,int thickness 1,int lineType LINE_8,int shift 0 ) 参数解释 1、pt1、pt2矩形对角线的点 2、其他参数同划线函数。函数功能 向右上方绘制简单、粗或填充的矩形。 函数cv::rectangle()绘制矩形轮廓或填充矩形其两个对角为pt1和pt2。实例 #include opencv2/core.hpp #include opencv2/imgproc.hpp #include opencv2/highgui.hppusing namespace cv;int main( void ){char rook_window[] Drawing 2: Rook;Mat rook_image Mat::zeros( w, w, CV_8UC3 );rectangle( rook_image,Point( 0, 7*400/8 ),Point( 400, 400),Scalar( 0, 255, 255 ),FILLED,LINE_8 );imshow( rook_window, rook_image );moveWindow( rook_window, 400, 200 );waitKey( 0 );return(0);//这里就不一行一行解释代码了上边画线看懂了这个自然很轻松主要是复习而已大家多看看哈 }1.1.5 cv::circle()画圆 函数原型 void cv::circle ( InputOutputArray img,Point center,int radius,const Scalar color,int thickness 1,int lineType LINE_8,int shift 0 ) 参数解释 1、center 圆中心点坐标 2、radius圆的半径 3、剩下的参数不必多言如果大家认真看了划线的讲解大家就都懂了函数功能 画个圆圈圈实例 #include opencv2/core.hpp #include opencv2/imgproc.hpp #include opencv2/highgui.hpp #define w 400 using namespace cv;void DrawFilledCircle( Mat img, Point center ) // 小编实在懒得写前置声明了这个图省事当然标准格式还是参照划线的代码吧 {circle( img,center,w/32,Scalar( 0, 0, 255 ),FILLED,LINE_8 ); }int main( void ){char window[] Drawing Window;Mat image Mat::zeros( w, w, CV_8UC3 );MyFilledCircle( atom_image, Point( w/2, w/2) );// 画布中心200,200的位置画圆imshow( window, image );waitKey( 0 );return(0); }二、图像的平滑滤波处理 2.1 概念 平滑滤波也称之为模糊是一种简单的图像处理的操作。     至于模糊的目的一般情况下最多的情况用于降噪其次用于边界检测的相关处理也是比较广泛的当然其他用途还是得看具体的业务。 2.2 OpenCV关于图像模糊的操作 对于模糊处理通常会使用到滤波器来处理图像。 2.2.1 常用滤波器的分类 归一化框方框/块滤波         这个过滤器是最简单的每个输出像素是其内核相邻区域的均值均为相等权重         其内核如下 高斯滤波器         可能是最有用的过滤器虽然不是最快的。高斯滤波是通过将输入数组中的每个点与高斯核进行卷积来完成的然后将它们相加以产生输出数组。位于中间的像素将具有最大的权重。其邻居的权重随着它们与中心像素之间的空间距离的增加而减小。         其内核如下 中值滤波器         中值滤波器遍历信号的每个元素在这种情况下为图像并用其相邻像素的中位数位于估计像素周围的正方形邻域替换每个像素。双边滤波器         与高斯滤波器类似的方式双边滤波器也考虑相邻像素其权重分配给它们。这些权重具有两个分量其中第一个是高斯滤波器使用的相同加权。第二个组件考虑了相邻像素与被评估的像素之间的强度差异。 2.2.2 各种滤波方法具体的代码实现 归一化滤波 OpenCV提供函数cv :: blur()来使用此过滤器进行平滑处理。 void cv::blur(InputArray src,OutputArray dst,Size ksize,Point anchor Point(-1,-1),int borderType BORDER_DEFAULT ) /* 参数解释 1、src源图像(Mat对象它可以有任意数量的通道这些通道是独立处理的但深度应该是CV_8U、CV_16U、CV_36S、CV_32F或CV_64F。 2、dst目标图像Mat对象输出的图像和源图像同类型和同尺寸。 3、ksize滤波器使用的内核的大小Size(x,y)宽度为w像素和高度h像素。 4、anchor锚点默认值Point(-1,-1)在所选择大小的内核的中心。 5、borderType用于图像扩张外部像素的边框模式请参见边框类型BORDERTYPE。不支持BORDER_WRAP。 */关于BORDERTYPE的参考值BORDERTYPE类型参考 高斯滤波 void cv::GaussianBlur ( InputArray src,OutputArray dst,Size ksize,double sigmaX,double sigmaY 0,int borderType BORDER_DEFAULT ) /* 参数解释 1、sigmaXX方向的高斯核标准偏差。 2、sigmaY: Y方向的高斯核标准偏差默认为0。 其余参数同之前。 */关于这个方法中提及的XY方向上距离高斯核的偏差大家可以简单理解为模糊的情况。中值滤波 void cv::medianBlur ( InputArray src,OutputArray dst,int ksize ) // 参数解释 // ksize内核的线性尺寸它必须是奇数且大于1例如3、5、7。。。双边滤波 void cv::bilateralFilter ( InputArray src,OutputArray dst,int d,double sigmaColor,double sigmaSpace,int borderType BORDER_DEFAULT )/* 参数解释 1、d过滤过程中使用的每个像素邻域的直径。如果它是非正的则从sigmaSpace计算。 2、sigmaColor颜色空间中的西格玛值。该参数的值越大意味着像素邻域请参见sigmaSpace中的颜色越远将混合在一起从而产生更大的半等色区域。 3、sigmaSpace在坐标空间中过滤西格玛值。该参数的值越大意味着只要颜色足够接近更远的像素就会相互影响请参见sigmaColor。当d0时它指定邻域大小而不考虑sigmaSpace。否则d与sigmaSpace成比例。 */ 双边滤波器可以很好地减少不需要的噪声同时保持边缘相当清晰。然而与大多数过滤器相比它非常慢。         sigma值为了简单起见可以将2西格玛值设置为相同。如果它们很小10滤镜将不会有太大的效果而如果它们很大150它们将有非常强的效果使图像看起来“卡通”。         过滤器大小大型过滤器d5非常慢因此建议对实时应用程序使用d5对需要重噪声过滤的脱机应用程序使用d9。 2.3 参考源码 #include opencv2/imgproc.hpp #include opencv2/imgcodecs.hpp #include opencv2/highgui.hpp using namespace std; using namespace cv; int DELAY_CAPTION 1500; int DELAY_BLUR 100; int MAX_KERNEL_LENGTH 31; Mat src; Mat dst; char window_name[] Smoothing Demo; int display_caption( const char* caption ); int display_dst( int delay ); int main( void ) {namedWindow( window_name, WINDOW_AUTOSIZE );src imread( ../data/lena.jpg, IMREAD_COLOR );if( display_caption( Original Image ) ! 0 ) { return 0; }dst src.clone();if( display_dst( DELAY_CAPTION ) ! 0 ) { return 0; }if( display_caption( Homogeneous Blur ) ! 0 ) { return 0; }for ( int i 1; i MAX_KERNEL_LENGTH; i i 2 ){ blur( src, dst, Size( i, i ), Point(-1,-1) );if( display_dst( DELAY_BLUR ) ! 0 ) { return 0; } }if( display_caption( Gaussian Blur ) ! 0 ) { return 0; }for ( int i 1; i MAX_KERNEL_LENGTH; i i 2 ){ GaussianBlur( src, dst, Size( i, i ), 0, 0 );if( display_dst( DELAY_BLUR ) ! 0 ) { return 0; } }if( display_caption( Median Blur ) ! 0 ) { return 0; }for ( int i 1; i MAX_KERNEL_LENGTH; i i 2 ){ medianBlur ( src, dst, i );if( display_dst( DELAY_BLUR ) ! 0 ) { return 0; } }if( display_caption( Bilateral Blur ) ! 0 ) { return 0; }for ( int i 1; i MAX_KERNEL_LENGTH; i i 2 ){ bilateralFilter ( src, dst, i, i*2, i/2 );if( display_dst( DELAY_BLUR ) ! 0 ) { return 0; } }display_caption( End: Press a key! );waitKey(0);return 0; } int display_caption( const char* caption ) {dst Mat::zeros( src.size(), src.type() );putText( dst, caption,Point( src.cols/4, src.rows/2),FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 255) );imshow( window_name, dst );int c waitKey( DELAY_CAPTION );if( c 0 ) { return -1; }return 0; } int display_dst( int delay ) {imshow( window_name, dst );int c waitKey ( delay );if( c 0 ) { return -1; }return 0; }大家可以在自己电脑的相关位置找到这个源码…/opencv/opencv/tree/master/samples/cpp/tutorial_code/ImgProc/Smoothing.cpp         孜孜不倦持续更新。期待关注
http://www.w-s-a.com/news/253557/

相关文章:

  • 建设电子商务网站论文云服务器安装wordpress
  • 做展板好的网站学校的网站开发过程
  • 宁波搭建网站价格西部数码网站正在建设中是什么意思
  • 吉林省建设项目招标网站苏州网络推广定制
  • 网站域名所有权证明引流推广接单
  • 做网站百度百科孟州网站建设
  • 服务网站建设企业广州模板建站系统
  • 怎么做属于自己的免费网站浏览器游戏网址
  • 上海城乡住房建设厅网站西安网站推广慧创科技
  • 做策划网站推广怎么写简历互联网公司手机网站
  • 怎么做宣传网站网站建设采购项目合同书
  • 网站的空间和域名备案做网站要会写什么
  • wap 网站源码企业网站被转做非法用途
  • 下载网站模板怎么使用做物流网站的公司
  • 网站 商城 app 建设建设银行江苏省行网站
  • 广州网站开发建设西安广告公司联系方式
  • 怎么用腾讯云服务器做网站个人网站开发视频
  • 网站建设技术代码坦洲网站建设公司哪家好
  • 阿里云对象存储做静态网站怎样做网站性能优化
  • 怎样做理财投资网站装修平面图用什么软件简单
  • 建手机wap网站大概多少钱苏州网站设计公司有哪些
  • 网站建设需求文件学校网站建设方案及报价
  • 网站开发一般多少钱wordpress打赏赞插件
  • 做中国o2o网站领导唐山网站制作软件
  • 门户网站简介做网站一天能接多少单
  • 论坛类网站建设遵义网站制作外包
  • vps服务器购买网站小视频做网站怎么赚钱
  • 网站用图片wordpress同步发布
  • 织梦图片自适应网站源码网页美工的设计要点
  • 渝快办官方网站wordpress产品图片怎么改