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

python做的网站哪些网站建设实训小结

python做的网站哪些,网站建设实训小结,做外贸找客户的网站,大学网站建设管理制度透视矫正,引用文档拍照扫描#xff0c;相片矫正这块。 读取图像Cv2.ImRead();预处理#xff08;灰度化#xff0c;高斯滤波、边缘检测#xff09;轮廓检测#xff08;获取到最大轮廓#xff09;获取最大面积轮廓的四个顶点标识最小矩形坐标透视矫正显示 完整代码 // 1、…透视矫正,引用文档拍照扫描相片矫正这块。 读取图像Cv2.ImRead();预处理灰度化高斯滤波、边缘检测轮廓检测获取到最大轮廓获取最大面积轮廓的四个顶点标识最小矩形坐标透视矫正显示 完整代码 // 1、读取图像Mat image Cv2.ImRead(2.jpg, ImreadModes.Color);//2、预处理灰度化高斯滤波、边缘检测Mat src_gray new Mat();Cv2.CvtColor(image, src_gray, ColorConversionCodes.BGR2GRAY); // 转换为灰度图像Cv2.GaussianBlur(src_gray, src_gray, new Size(5, 5), 0, 0); // 进行高斯模糊Mat canny_Image new Mat();Cv2.Canny(src_gray, canny_Image, 75, 200);//3、轮廓检测Point[][] contours;HierarchyIndex[] hierarchy;Cv2.FindContours(canny_Image, out contours, out hierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple);// 计算轮廓的面积double maxArea 0;int maxAreaIndex -1;for (int i 0; i contours.Length; i){double area Cv2.ContourArea(contours[i]);if (area maxArea){maxArea area;maxAreaIndex i;}}// 获取最大面积的轮廓Point[] largestContour contours[maxAreaIndex];//4、获取最大面积轮廓的四个顶点。Point[] approx Cv2.ApproxPolyDP(contours[maxAreaIndex], 0.02 * Cv2.ArcLength(contours[maxAreaIndex], true), true);Cv2.DrawContours(image, new Point[][] { approx }, -1, Scalar.Blue, 2);//可以注释掉for (int i 0; i 4; i){// 设置目标图像的四个顶点坐标//Cv2.PutText(image, Hi, new Point(approx[i].X, approx[i].Y), HersheyFonts.HersheySimplex, 1, new Scalar(0, 0, 255), 2, LineTypes.Link4);}//5、透视转换OpenCvSharp.Point2f[] srcPt new OpenCvSharp.Point2f[4];srcPt[0] approx[0];srcPt[1] approx[3];srcPt[2] approx[2];srcPt[3] approx[1];RotatedRect rect Cv2.MinAreaRect(srcPt);Rect box rect.BoundingRect();OpenCvSharp.Point2f[] dstPt new OpenCvSharp.Point2f[4];//可以注释掉用于观察坐标点是否对齐dstPt[0].X 0;dstPt[0].Y 0;dstPt[1].X 0 box.Width;dstPt[1].Y 0;dstPt[2].X 0 box.Width;dstPt[2].Y 0 box.Height;dstPt[3].X 0;dstPt[3].Y 0 box.Height;Mat final new Mat(box.Height, box.Width, MatType.CV_8UC3);Mat warpmatrix Cv2.GetPerspectiveTransform(srcPt, dstPt);//获得变换矩阵Cv2.WarpPerspective(image, final, warpmatrix, final.Size());//投射变换将结果赋给finalCv2.ImShow(获取新正四边形, final);Cv2.WaitKey(0);Rect roi new Rect(box.X, box.Y, box.Width, box.Height);//坐标 x,y 尺寸 长宽Mat croppedImage new Mat(final, roi);for (int i 0; i 4; i){// 设置目标图像的四个顶点坐标Cv2.PutText(image, A i, new Point(dstPt[i].X, dstPt[i].Y), HersheyFonts.HersheySimplex, 1, new Scalar(0, 0, 255), 2, LineTypes.Link4);}// 显示结果Cv2.ImShow(透视矫正图像, image);Cv2.WaitKey(0); 一 、读取图像Cv2.ImRead() // 1、读取图像 Mat image Cv2.ImRead(2.jpg, ImreadModes.Color);二、预处理灰度化高斯滤波、边缘检测  灰度化Cv2.CvtColor() 高斯滤波Cv2.GaussianBlur(); 边缘检测Cv2.Canny(); //2、预处理灰度化高斯滤波、边缘检测Mat src_gray new Mat(); Cv2.CvtColor(image, src_gray, ColorConversionCodes.BGR2GRAY); // 转换为灰度图像 Cv2.GaussianBlur(src_gray, src_gray, new Size(5, 5), 0, 0); // 进行高斯模糊 Mat canny_Image new Mat(); Cv2.Canny(src_gray, canny_Image, 75, 200); 三、轮廓检测获取到最大轮廓  通过Cv2.ContourArea()计算轮廓的面积选出最大轮廓 //3、轮廓检测 Point[][] contours; HierarchyIndex[] hierarchy; Cv2.FindContours(canny_Image, out contours, out hierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple);// 计算轮廓的面积 double maxArea 0; int maxAreaIndex -1; for (int i 0; i contours.Length; i) {double area Cv2.ContourArea(contours[i]);if (area maxArea){maxArea area;maxAreaIndex i;} }// 获取最大面积的轮廓 Point[] largestContour contours[maxAreaIndex]; 四、 获取最大面积轮廓的四个顶点。 Cv2.ApproxPolyDP() 获取4个顶点坐标 //4、获取最大面积轮廓的四个顶点。 Point[] approx Cv2.ApproxPolyDP(contours[maxAreaIndex], 0.02 * Cv2.ArcLength(contours[maxAreaIndex], true), true); 标识四个顶点 //可以注释掉for (int i 0; i 4; i){// 设置目标图像的四个顶点坐标Cv2.PutText(image, Hi, new Point(approx[i].X, approx[i].Y), HersheyFonts.HersheySimplex, 1, new Scalar(0, 0, 255), 2, LineTypes.Link4);} 五、标识最小矩形坐标 获取顶点内最小矩形Cv2.MinAreaRect(srcPt); //获取四个顶点坐标最小矩形顶点 RotatedRect rect Cv2.MinAreaRect(srcPt); Rect box rect.BoundingRect(); OpenCvSharp.Point2f[] dstPt new OpenCvSharp.Point2f[4]; stPt[0].X box.X;dstPt[0].Y box.Y;dstPt[1].X box.X box.Width;dstPt[1].Y box.Y;dstPt[2].X box.X box.Width;dstPt[2].Y box.Y box.Height;dstPt[3].X box.X;dstPt[3].Y box.Y box.Height;Mat final new Mat();Mat warpmatrix Cv2.GetPerspectiveTransform(srcPt, dstPt);//获得变换矩阵Cv2.WarpPerspective(image, final, warpmatrix, image.Size());//投射变换将结果赋给finalRect roi new Rect(box.X, box.Y, box.Width, box.Height);//坐标 x,y 尺寸 长宽Mat croppedImage new Mat(final, roi);for (int i 0; i 4; i){// 设置目标图像的四个顶点坐标Cv2.PutText(image, A i, new Point(dstPt[i].X, dstPt[i].Y), HersheyFonts.HersheySimplex, 1, new Scalar(0, 0, 255), 2, LineTypes.Link4);} 两个坐标点顺序不一样对齐坐标顺序进行透视坐标转换 //5、透视转换OpenCvSharp.Point2f[] srcPt new OpenCvSharp.Point2f[4];srcPt[0] approx[0];srcPt[1] approx[3];srcPt[2] approx[2];srcPt[3] approx[1];RotatedRect rect Cv2.MinAreaRect(srcPt);Rect box rect.BoundingRect();OpenCvSharp.Point2f[] dstPt new OpenCvSharp.Point2f[4];dstPt[0].X box.X;dstPt[0].Y box.Y;dstPt[1].X box.X box.Width;dstPt[1].Y box.Y;dstPt[2].X box.X box.Width;dstPt[2].Y box.Y box.Height;dstPt[3].X box.X;dstPt[3].Y box.Y box.Height;Mat final new Mat(); 六、透视变换显示 Mat warpmatrix Cv2.GetPerspectiveTransform(srcPt, dstPt);//获得变换矩阵 Cv2.WarpPerspective(image, final, warpmatrix, final.Size());//投射变换将结果赋给final Cv2.ImShow(透视矫正图像, final); 通过掌握这六个步骤你可以在C#中使用OpenCvSharp实现透视矫正。祝你成功
http://www.zqtcl.cn/news/549727/

相关文章:

  • net域名做网站怎么样建站公司 转型经验
  • 赣州网站建设哪家公司好上海市建设安全协会网站
  • 网站排名优化软件有哪些西宁网站建设官网
  • 支付宝手机网站签约迪庆公司网站开发方法
  • 唐山网站关键词优化网站开发公司推荐
  • 福建响应式网站制作市工商局网站建设情况
  • 深圳网站运营托管罗伯特清崎说的网络营销是什么
  • 太仓市质监站网址百度关键字推广费用
  • 为您打造高端品牌网站pageadmin wordpress
  • 中小型网站建设的基本流程简约网站欣赏
  • 设备上哪个网站做外贸推广网络服务类型及其所采用的网络协议
  • 学习前端开发的网站动漫设计属于什么大类
  • 十堰秦楚网 十堰新闻门户网站报修网站模板
  • 家居小程序源码下载自动seo系统
  • 动态效果的网站建设技术老闵行是指哪里
  • 电商网站开发面临的技术问题做闪图的网站
  • 怎么查看网站开发语言的类型东莞哪些地方是风险区
  • 不用购买域名做网站广州网站建设培训学校
  • 城市轨道建设规范下载网站古网站典模板
  • 关于实验室建设的英文网站深圳企业网站制作公司怎样
  • wordpress全站背景音乐中山网站搜索排名
  • 搭建网站的过程透明主题wordpress
  • 丰台网站建设公司电话深圳微信商城网站设计公司
  • 做淘宝要用的网站吗上海微信网站
  • 佛山高端网站制作公司wordpress 发送邮件插件
  • 类似站酷的设计类网站网站建设需要待摊吗
  • 用php做视频网站在学做网站还不知道买什么好
  • wordpress培训类网站网站建设 好
  • 网站开发需要2个月吗网站建设案例精粹
  • 网站建设项目职责营销型网站建设五大内容