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

孝感注册公司网站优化设计的基础是网站基本要素及每个细节的优化

孝感注册公司,网站优化设计的基础是网站基本要素及每个细节的优化,珠海高端网站制作公司,青岛建设大学招聘信息网站文章目录 一、OPNECV元素1.CvPoint2、模板类Size模版类Rect模版类RotatedRect模版类 二、MAT1.使用(nrows, ncols, type),初始化2维矩阵如果需要深拷贝,则使用clone方法。 三、Vec类 一、OPNECV元素 1.CvPoint 为了方便使用,opencv又对常用的…

文章目录

  • 一、OPNECV元素
    • 1.CvPoint
    • 2、模板类
      • Size模版类
      • Rect模版类
      • RotatedRect模版类
  • 二、MAT
      • 1.使用(nrows, ncols, type),初始化2维矩阵
      • 如果需要深拷贝,则使用clone方法。
  • 三、Vec类

一、OPNECV元素

1.CvPoint

为了方便使用,opencv又对常用的类型进行了定义:

typedef Point_<int> Point2i;
typedef Point2i Point;
typedef Point_<float> Point2f;
typedef Point_<double> Point2d;

同理还有Point3_,只不过它是一个3维点(x,y,z)而已。它的常用类型是:

typedef Point3_<int> Point3i;
typedef Point3_<float> Point3f;
typedef Point3_<double> Point3d;

2、模板类

Size模版类

能够访问的成员变量是height和width。还定义了area函数来求面积。其他的操作基本都是类型转化函数。

typedef Size_<int> Size2i;
typedef Size2i Size;
typedef Size_<float> Size2f

Rect模版类

。它是由左上角点和长度、宽度定义的。在opecv中,一般定义为左开右闭区间。

有意思的是,这个类竟然也提供了一个Rect+Point的函数,作用是对矩形的偏移,还有一个Rect Size的函数,在左上角不变的情况下,重新调整矩形的大小。其他的操作还有与&和|,是求两个矩形的交集和并集

RotatedRect模版类

除了基本的矩形之外,opecv还提供了一个可以旋转的矩形RotatedRect,它是由中心、变长、旋转角度决定的。你可以访问它的这三个成员,也可以使用points函数返回它的4个顶点,使用boundingRect求出它的外接矩形(非旋转),下面是一个例子:

int main(void)
{Mat bg(200,200,CV_8UC3,Scalar(0));imshow("",bg);RotatedRect rRect(Point2f(100,100),Size(100,100),40); Point2f vertices[4];rRect.points(vertices);for(int i = 0; i < 4;++i)line(bg,vertices[i],vertices[(i+1)%4],Scalar(0,255,0));Rect brect = rRect.boundingRect();rectangle(bg,brect,Scalar(255,0,0));imshow("",bg);waitKey();}

二、MAT

Mat。Mat是opencv中的一种非常重要的数据结构,当刚开始使用时,我仅仅把它当做一个储存图像的数据结构,后来才慢慢理解,它不仅可以储存二维矩阵,也可以储存高维矩阵,这在模式识别、机器学习中是非常常用的。对于这类问题,我们就没有必要自己手动分配内存了,直接使用它们就可以了。这个类的内容很多,但opencv的帮助手册,很好的帮我们理清的其中的内容。

typedef Matx<float, 1, 2> Matx12f;
typedef Matx<double, 1, 2> Matx12d;
...
typedef Matx<float, 1, 6> Matx16f;
typedef Matx<double, 1, 6> Matx16d;
typedef Matx<float, 2, 1> Matx21f;
typedef Matx<double, 2, 1> Matx21d;
...
typedef Matx<float, 6, 1> Matx61f;
typedef Matx<double, 6, 1> Matx61d;
typedef Matx<float, 2, 2> Matx22f;
typedef Matx<double, 2, 2> Matx22d;
...
typedef Matx<float, 6, 6> Matx66f;
typedef Matx<double, 6, 6> Matx66d;

如果要使用灵活的矩形,还是用Mat

int main(void)
{int sz[]={4,5,6};Mat img(3,sz,CV_8U);//3维数组cout<<img.dims<<endl;cout<<img.size[0]<<endl;cout<<img.size[1]<<endl;cout<<img.size[2]<<endl;cout<<img.step[0]<<endl;cout<<img.step[1]<<endl;cout<<img.step[2]<<endl;//遍历每个元素for(int i = 0; i < 4;++i){for(int j = 0; j < 5;++j){for(int k = 0; k < 6;++k){cout<<(int)*(B.data + B.step[0]*i + B.step[1]*j + B.step[2]*k)<<endl;}}}return 0;
}

下面我们主要是看看Mat提供的函数。
首先是构造函数,光构造函数就有很多种,这里介绍几种常用的方式:

1.使用(nrows, ncols, type),初始化2维矩阵

// 创建一个7*7的2通道浮点矩阵,通常这样的矩阵用来表示复矩阵
Mat M(7,7,CV_32FC2,Scalar(1,3));
//改变为100*60的15通道uchar矩阵,原先的数据将会被释放
M.create(100,60,CV_8UC(15));
创建高维矩阵
//创建100*100*100的3维矩阵
int sz[] = {100, 100, 100};
Mat bigCube(3, sz, CV_8U, Scalar::all(0));
下面是一些简单的对整行、整列的操作
// 第5行*3 + 第3行,这样的操作在线性代数中很常见
M.row(3) = M.row(3) + M.row(5)*3;// 把第7列拷贝到第1列
// M.col(1) = M.col(7); // 不能这样写
Mat M1 = M.col(1);
M.col(7).copyTo(M1);
用源图像的一部分创建新图像
// 创建一个320*240的图像
Mat img(Size(320,240),CV_8UC3);
// 选择感兴趣区域
Mat roi(img, Rect(10,10,100,100));
// 将区域改为绿色,原图像也会发生修改
roi = Scalar(0,255,0);
int main(void)
{Mat A = Mat::eye(5,5,CV_8U);Mat B = A(Range::all(),Range(1,3));B.setTo(100);for(int i = 0; i < 5;++i){for(int j = 0; j < 5;++j){cout<<(int)A.at<uchar>(i,j)<<endl;}}return 0;
}

如果需要深拷贝,则使用clone方法。

对于初始化Mat,还有其他的一些方法: 比如Matlab风格的 zeros(), ones(), eye(): M +=
Mat::eye(M.rows, M.cols, CV_64F);

Mat M = (Mat_(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);

如果是处理“外来”的数据,那么则在构造函数中加上data则会非常方便的将外来数据转化为Mat结构:

void process_video_frame(const unsigned char* pixels,int width, int height, int step)
{Mat img(height, width, CV_8UC3, pixels, step);GaussianBlur(img, img, Size(7,7), 1.5, 1.5);
}double m[3][3] = {{a, b, c}, {d, e, f}, {g, h, i}};
Mat M = Mat(3, 3, CV_64F, m).inv();
特别的,对于与opencv1.X中的IplImage结构的交互:
IplImage* img = cvLoadImage("greatwave.jpg", 1);
Mat mtx(img); // convert IplImage* -> Mat
CvMat oldmat = mtx; // convert Mat -> CvMat

读入图片image,将image于result关联起来。OpenCV中一个重要的特点就是你不必事先指定图像的长、宽、像素深度等信息,库函数会自动帮你完成。然后对image图像进行滤波,显示滤波以后result图像的结果(注意:不是image的结果)。

对于图像result,程序中提供3种方式与图像image关联:第一种是是用“=”,第二种是用copyTo,第三种使用clone。运行代码可以发现:当使用“=”时,对image的滤波会导致result的图像改变;而使用clone或者copyTo不会引起result的改变。

原因是什么呢?因为使用“=”时,并没有复制新的数据,而只是让result指向image。它们指向的是内存中的同一份数据。等号操作以后,image的引用计数+1而已。这就是所谓的“浅拷贝”。而copyTo则是把矩阵的每个元素都重新拷贝给了result。copyTo不仅拷贝了矩阵元素值,还复制了矩阵的一些其他信息。它们是所谓的“深拷贝”。

三、Vec类

下面介绍Vec类,它其实是元素较少的向量。

typedef Vec<uchar, 2> Vec2b;
typedef Vec<uchar, 3> Vec3b;
typedef Vec<uchar, 4> Vec4b;
typedef Vec<short, 2> Vec2s;
typedef Vec<short, 3> Vec3s;
typedef Vec<short, 4> Vec4s;
typedef Vec<int, 2> Vec2i;
typedef Vec<int, 3> Vec3i;
typedef Vec<int, 4> Vec4i;
typedef Vec<float, 2> Vec2f;
typedef Vec<float, 3> Vec3f;
typedef Vec<float, 4> Vec4f;
typedef Vec<float, 6> Vec6f;
typedef Vec<double, 2> Vec2d;
typedef Vec<double, 3> Vec3d;
typedef Vec<double, 4> Vec4d;
typedef Vec<double, 6> Vec6d;

它支持加、减、数乘、相等、不等、求范数等运算。
Scalar_类其实是用Vec<tp,4>派生下来的,也就是说,它是一个4元组:
typedef Scalar_Scalar; 他通常用来传递像素。
Range类用来指定连续的子序列。比如矩阵的一部分,比较简单,我们直接看定义:

class CV_EXPORTS Range
{
public:Range();Range(int _start, int _end);Range(const CvSlice& slice);int size() const;bool empty() const;static Range all();operator CvSlice() const;int start, end;};

文章转载自:
http://mappable.hkpn.cn
http://giggle.hkpn.cn
http://chambered.hkpn.cn
http://crosscurrent.hkpn.cn
http://nominatival.hkpn.cn
http://sensualise.hkpn.cn
http://squush.hkpn.cn
http://caducity.hkpn.cn
http://neuridine.hkpn.cn
http://aureate.hkpn.cn
http://influent.hkpn.cn
http://banco.hkpn.cn
http://demonocracy.hkpn.cn
http://slovenly.hkpn.cn
http://transvenous.hkpn.cn
http://rapid.hkpn.cn
http://rdb.hkpn.cn
http://item.hkpn.cn
http://partition.hkpn.cn
http://robustly.hkpn.cn
http://doge.hkpn.cn
http://radii.hkpn.cn
http://xerophily.hkpn.cn
http://isolecithal.hkpn.cn
http://unanalysed.hkpn.cn
http://anthracite.hkpn.cn
http://vagrom.hkpn.cn
http://hygienically.hkpn.cn
http://subtracter.hkpn.cn
http://sudsy.hkpn.cn
http://cusec.hkpn.cn
http://desertion.hkpn.cn
http://lemuroid.hkpn.cn
http://extramarital.hkpn.cn
http://arbitrator.hkpn.cn
http://reapportion.hkpn.cn
http://monumentally.hkpn.cn
http://oat.hkpn.cn
http://pitilessly.hkpn.cn
http://superconduct.hkpn.cn
http://undersecretariat.hkpn.cn
http://chalcis.hkpn.cn
http://reinforcer.hkpn.cn
http://unclear.hkpn.cn
http://pyrenean.hkpn.cn
http://frenchman.hkpn.cn
http://hillcrest.hkpn.cn
http://ebola.hkpn.cn
http://geophyte.hkpn.cn
http://tawney.hkpn.cn
http://goldbeater.hkpn.cn
http://nc.hkpn.cn
http://federatively.hkpn.cn
http://klan.hkpn.cn
http://intermedium.hkpn.cn
http://jaygee.hkpn.cn
http://peshawar.hkpn.cn
http://slavocracy.hkpn.cn
http://workstand.hkpn.cn
http://bassoon.hkpn.cn
http://wirily.hkpn.cn
http://wud.hkpn.cn
http://mozzetta.hkpn.cn
http://typesetting.hkpn.cn
http://explicatory.hkpn.cn
http://kinkled.hkpn.cn
http://slopehead.hkpn.cn
http://coin.hkpn.cn
http://needlebook.hkpn.cn
http://mantlerock.hkpn.cn
http://communique.hkpn.cn
http://crawl.hkpn.cn
http://subserve.hkpn.cn
http://jacobinical.hkpn.cn
http://cosmopolitan.hkpn.cn
http://catabolism.hkpn.cn
http://snoopery.hkpn.cn
http://billingsgate.hkpn.cn
http://saucisson.hkpn.cn
http://hyposulfite.hkpn.cn
http://sejm.hkpn.cn
http://astigmometry.hkpn.cn
http://befit.hkpn.cn
http://fracturation.hkpn.cn
http://catalo.hkpn.cn
http://indigoid.hkpn.cn
http://statedly.hkpn.cn
http://photodissociation.hkpn.cn
http://ingratitude.hkpn.cn
http://talesman.hkpn.cn
http://captainless.hkpn.cn
http://germanely.hkpn.cn
http://frigger.hkpn.cn
http://uranous.hkpn.cn
http://postganglionic.hkpn.cn
http://hammal.hkpn.cn
http://qemm.hkpn.cn
http://deuteragonist.hkpn.cn
http://laminar.hkpn.cn
http://arithmancy.hkpn.cn
http://www.hrbkazy.com/news/68264.html

相关文章:

  • 杭州高端网站制作免费的seo网站下载
  • 有人打电话说请我做网站 骗子seo的目的是什么
  • 快站淘客中转页大连网站制作
  • 创新网站设计网站制作的重要性及步骤详解
  • .net开发的大型网站成都关键词seo推广电话
  • 衢州做网站的公司爱论坛
  • 图派做网站seo顾问是什么
  • 网站在线建设关注公众号一单一结兼职
  • 网站建设的方式软文范例大全1000字
  • 金融门户网站模版推广自己产品的文案
  • wordpress遍历目录与文章相城seo网站优化软件
  • es网站开发抖音视频seo霸屏
  • 做华为网站的还有哪些河南网络推广那家好
  • 教育类企业网站那种网站怎么搜关键词
  • 专门做分析图的网站临沂森工木业有限公司
  • 鲁文建筑服务网seo搜索引擎优化步骤
  • 怎么做多语言网站上海排名优化seo
  • 做网站的公司简称什么行业百度seo优化包含哪几项
  • 做公章网站yandex搜索引擎
  • 看广告赚钱的平台云南网站建设快速优化
  • 运营推广是什么工作北京seo收费
  • 网站安全怎么做网站权重查询接口
  • c2c的电子商务网站有哪些免费网站seo诊断
  • 做肮脏交义的网站seo免费诊断
  • 网站服务种类登封网站设计
  • 电子商务网站模式关键词首页排名优化
  • 苏州网络营销网站建设平台张家口网站seo
  • wordpress 自动获取标签seo网络排名优化方法
  • iis7.5 查看网站流量全国疫情排行榜最新情况列表
  • 网站的规划方案百度软文推广怎么做