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

网站开发技术参数微信团购群网站怎样做

网站开发技术参数,微信团购群网站怎样做,wordpress模板结构详解,云南大理拍婚纱照价格表若该文为原创文章#xff0c;转载请注明原文出处 本文章博客地址#xff1a;https://hpzwl.blog.csdn.net/article/details/136616551 各位读者#xff0c;知识无穷而人力有穷#xff0c;要么改需求#xff0c;要么找专业人士#xff0c;要么自己研究 红胖子(红模仿)的博…若该文为原创文章转载请注明原文出处 本文章博客地址https://hpzwl.blog.csdn.net/article/details/136616551 各位读者知识无穷而人力有穷要么改需求要么找专业人士要么自己研究 红胖子(红模仿)的博文大全开发技术集合包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等持续更新中…点击传送门 OpenCV开发专栏点击传送门 上一篇《OpenCV开发笔记七十六相机标定一识别棋盘并绘制角点》 下一篇持续补充中… 前言 通过相机图片可以识别出棋盘角点了这时候我们需要通过角点去计算相机内参矩阵通过上篇得知畸变的原理所以我们尽可能要全方位都能获取标定图片全方位意思是提供的多张图综合起来基本覆盖了相机所有的像素同时还要注意远近和斜着   本篇通过一张图片来识别计算得到相机内参矩阵并矫正相机畸形。 补充 做项目一定要多张且基本覆盖相机所有区域要保证每一张截取的图片也要被识别可以做成个软件识别出棋盘都在一个预先指定的区域内则截图然后下一个区域实现半自动半人工化标定。 Demo 这里只用了一张图校准所以可能内参矩阵经度不那么高    一张图校准的实例 注意这里demo只使用了可识别的一张图作为计算可能没覆盖的区域则出现不可预期的图像问题。 步骤一世界坐标系初始化 这里是直接填充行列的坐标第三个是z坐标直接设置为0为视口处 // 步骤八角点对应的三维坐标一张图一组 std::vectorstd::vectorcv::Point3f vectorObjectPoint; std::vectorcv::Point3f objectPoints; // 三维世界坐标系 for(int i 0; i chessboardRowCornerCount; i) {for(int j 0; j chessboardColCornerCount; j){objectPoints.push_back(cv::Point3f(j, i, 0));} } vectorObjectPoint.push_back(objectPoints);步骤二识别的角点放入列表 多张图放入多次这里只有一张图 // 步骤九图像识别出来的角点一张图一组 std::vectorstd::vectorcv::Point2f vectorImagePoint; vectorImagePoint.push_back(vectorPoint2fCorners);步骤三计算内参和畸变系数 输出的参数有点多输入的参数却不多 // 步骤十计算内参和畸变系数 cv::Mat cameraMatrix; // 相机矩阵接收输出 cv::Mat distCoeffs; // 畸变系数接收输出 cv::Mat Rotate; // 旋转量接收输出 cv::Mat Translate; // 偏移量接收输出 cv::calibrateCamera(vectorObjectPoint,vectorImagePoint,grayMat.size(),cameraMatrix,distCoeffs,Rotate,Translate); std::cout cameraMatrix: std::endl; std::cout cameraMatrix std::endl;std::cout distCoeffs: std::endl; std::cout distCoeffs std::endl;std::cout Rotate: std::endl; std::cout Rotate std::endl;std::cout Translate: std::endl; std::cout Translate std::endl;步骤四畸变函数校准 这里校准相对容易所以难点在于标定校准做项目肯定要自己写一个标定软件了每次这么手动查看校准肯定不行的。 // 步骤十一畸变图像校准 cv::Mat dstMat; cv::undistort(srcMat, dstMat, cameraMatrix, distCoeffs); cv::imshow(6, dstMat);函数原型 calibrateCamera相机标定求解函数 OpenCV中的一个函数用于相机标定。相机标定是估计相机内参如焦距、主点坐标等和畸变系数的过程这些参数对于后续的图像处理任务如三维重建、目标跟踪等至关重要。 double calibrateCamera(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, Size imageSize, OutputArray cameraMatrix, OutputArray distCoeffs, OutputArray rvecs, OutputArray tvecs, int flags0, TermCriteria criteriaTermCriteria(TermCriteria::COUNTTermCriteria::EPS, 30, 1e-6));参数说明 objectPoints世界坐标系中的三维点。通常这些点是通过在标定板上定义的一系列点来获取的这些点的坐标是已知的。对于每个图像它应该是一个 Nx3 的数组或数组列表其中 N 是点的数量而 3 表示每个点的 (X, Y, Z) 坐标。imagePoints图像坐标系中的二维点即对应于 objectPoints 中的三维点在图像中的投影。对于每个图像它应该是一个 Nx2 的数组或数组列表其中 N 是点的数量而 2 表示每个点的 (x, y) 坐标。imageSize图像的大小表示为 Size 类型的对象包含图像的宽度和高度。cameraMatrix输出参数存储 3x3 的相机内参矩阵。distCoeffs输出参数存储畸变系数。通常有 5 个系数k1, k2, p1, p2, k3对于径向和切向畸变或 8 个系数k1, k2, k3, k4, k5, k6, p1, p2对于鱼眼相机模型。rvecs输出参数对于每个图像存储旋转向量的数组。tvecs输出参数对于每个图像存储平移向量的数组。flags不同标志的组合用于指定标定过程中使用的算法。 CV_CALIB_USE_INTRINSIC_GUESS使用该参数时将包含有效的fx,fy,cx,cy的估计值的内参矩阵cameraMatrix作为初始值输入然后函数对其做进一步优化。如果不使用这个参数用图像的中心点初始化光轴点坐标(cx, cy)使用最小二乘估算出fxfy这种求法好像和张正友的论文不一样不知道为何要这样处理。注意如果已知内部参数内参矩阵和畸变系数就不需要使用这个函数来估计外参可以使用solvepnp()函数计算外参数矩阵。 CV_CALIB_FIX_PRINCIPAL_POINT在进行优化时会固定光轴点光轴点将保持为图像的中心点。当CV_CALIB_USE_INTRINSIC_GUESS参数被设置保持为输入的值。 CV_CALIB_FIX_ASPECT_RATIO固定fx/fy的比值只将fy作为可变量进行优化计算。当 CV_CALIB_USE_INTRINSIC_GUESS没有被设置fx和fy的实际输入值将会被忽略只有fx/fy的比值被计算和使用。 CV_CALIB_ZERO_TANGENT_DIST切向畸变系数P1P2被设置为零并保持为零。 CV_CALIB_FIX_K1,…,CV_CALIB_FIX_K6对应的径向畸变系数在优化中保持不变。如果设置了CV_CALIB_USE_INTRINSIC_GUESS参数就从提供的畸变系数矩阵中得到。否则设置为0。 CV_CALIB_RATIONAL_MODEL理想模型启用畸变k4k5k6三个畸变参数。使标定函数使用有理模型返回8个系数。如果没有设置则只计算其它5个畸变参数。 CALIB_THIN_PRISM_MODEL 薄棱镜畸变模型启用畸变系数S1、S2、S3和S4。使标定函数使用薄棱柱模型并返回12个系数。如果不设置标志则函数计算并返回只有5个失真系数。 CALIB_FIX_S1_S2_S3_S4 优化过程中不改变薄棱镜畸变系数S1、S2、S3、S4。如果cv_calib_use_intrinsic_guess设置使用提供的畸变系数矩阵中的值。否则设置为0。 CALIB_TILTED_MODEL 倾斜模型启用畸变系数tauX and tauY。标定函数使用倾斜传感器模型并返回14个系数。如果不设置标志则函数计算并返回只有5个失真系数。 CALIB_FIX_TAUX_TAUY 在优化过程中倾斜传感器模型的系数不被改变。如果cv_calib_use_intrinsic_guess设置从提供的畸变系数矩阵中得到。否则设置为0。criteria迭代优化的终止条件。通常包含最大迭代次数和收敛的精度。 这个函数返回一个双精度浮点数表示重投影误差的估计值即实际图像点与通过相机参数和畸变系数计算出的图像点之间的平均误差。    为了获得准确的相机标定结果通常需要多个视图即多张不同角度和姿态拍摄的标定板图像**并确保标定板在不同图像中占据足够的视场。**此外图像应该清晰且标定板上的特征点如棋盘格的角点应准确检测。 initUndistortRectifyMap计算畸变参数 OpenCV中用于初始化用于图像去畸变和校正的映射表的函数。这个函数的目的是生成两个映射一个用于x坐标另一个用于y坐标它们可以被用于 remap函数来校正图像的畸变。 void initUndistortRectifyMap(InputArray cameraMatrix, InputArray distCoeffs, InputArray R, InputArray newCameraMatrix, Size size, int m1type, OutputArray map1, OutputArray map2)参数说明 cameraMatrix相机的内参矩阵一个3x3的浮点数矩阵。distCoeffs畸变系数一个1x5或1x8的向量包含径向和切向畸变系数。R可选的旋转矩阵一个3x3的浮点数矩阵表示从原相机坐标系到新的相机坐标系的旋转。如果这个参数是空的那么newCameraMatrix必须是cameraMatrix。newCameraMatrix新的相机内参矩阵一个3x3的浮点数矩阵。这个矩阵可以是原始相机矩阵或者经过getOptimalNewCameraMatrix调整后的矩阵以考虑图像的有效视场。size输出映射的尺寸表示为Size类型的对象包含图像的宽度和高度。m1type输出映射的类型可以是CV_32FC1或CV_16SC2。map1输出的第一个映射用于x坐标可以被传递给remap函数。map2输出的第二个映射用于y坐标可以被传递给remap函数。 这两个映射map1和map2可以被传递给remap函数以对图像进行去畸变和校正。    如果有一个畸变的图像distortedImage和想要得到校正后的图像undistortedImage可以这样使用这两个函数 Mat map1,map2; initUndistortRectifyMap(cameraMatrix, distCoeffs, R, newCameraMatrix, size, CV_32FC1, map1, map2); remap(distortedImage, undistortedImage, map1, map2, INTER_LINEAR);在这个例子中INTER_LINEAR是插值方法的类型用于remap函数。其他的插值方法如INTER_NEAREST、INTER_CUBIC等也可以被使用具体取决于应用需求。 Demo源码 void OpenCVManager::testCorrectingChessboard() { #define TestCorrectingChessboardUseCamera 0 #if !TestCorrectingChessboardUseCamera// 使用图片 // std::string srcFilePath D:/qtProject/openCVDemo/openCVDemo/modules/openCVManager/images/chessboard.png; // std::string srcFilePath D:/qtProject/openCVDemo/openCVDemo/modules/openCVManager/images/24.jpg; // std::string srcFilePath D:/qtProject/openCVDemo/openCVDemo/modules/openCVManager/images/27.png; // std::string srcFilePath D:/qtProject/openCVDemo/openCVDemo/modules/openCVManager/images/28.png;std::string srcFilePath D:/qtProject/openCVDemo/openCVDemo/modules/openCVManager/images/28.jpg;cv::Mat srcMat cv::imread(srcFilePath); #else// 使用摄像头cv::VideoCapture capture;// 插入USB摄像头默认为0if(!capture.open(0)){qDebug() __FILE__ __LINE__ Failed to open camera: 0;}else{qDebug() __FILE__ __LINE__ Succeed to open camera: 0;}while(true){cv::Mat srcMat;capture srcMat; #endifint chessboardColCornerCount 6;int chessboardRowCornerCount 9; // int chessboardColCornerCount 7; // int chessboardRowCornerCount 7;// 步骤一读取文件 // cv::imshow(1, srcMat); // cv::waitKey(0); // 步骤二缩放太大了缩放下可省略cv::resize(srcMat, srcMat, cv::Size(srcMat.cols / 2, srcMat.rows / 2));cv::Mat srcMat2 srcMat.clone();cv::Mat srcMat3 srcMat.clone();cv::imshow(2, srcMat); // cv::waitKey(0);// 步骤三灰度化cv::Mat grayMat;cv::cvtColor(srcMat, grayMat, cv::COLOR_BGR2GRAY);cv::imshow(3, grayMat); // cv::waitKey(0);// 步骤四检测角点std::vectorcv::Point2f vectorPoint2fCorners;bool patternWasFound false;patternWasFound cv::findChessboardCorners(grayMat,cv::Size(chessboardColCornerCount, chessboardRowCornerCount),vectorPoint2fCorners,cv::CALIB_CB_ADAPTIVE_THRESH | cv::CALIB_CB_FAST_CHECK | cv::CALIB_CB_NORMALIZE_IMAGE);/*enum { CALIB_CB_ADAPTIVE_THRESH 1, // 使用自适应阈值将图像转化成二值图像CALIB_CB_NORMALIZE_IMAGE 2, // 归一化图像灰度系数(用直方图均衡化或者自适应阈值)CALIB_CB_FILTER_QUADS 4, // 在轮廓提取阶段使用附加条件排除错误的假设CALIB_CB_FAST_CHECK 8 // 快速检测};*/cvui::printf(srcMat, 0, 0, 1.0, 0xFF0000, found %s, patternWasFound ? true : false);cvui::printf(srcMat, 0, 24, 1.0, 0xFF0000, count %d, vectorPoint2fCorners.size());qDebug() __FILE__ __LINE__ vectorPoint2fCorners.size();// 步骤五绘制棋盘点cv::drawChessboardCorners(srcMat2,cv::Size(chessboardColCornerCount, chessboardRowCornerCount),vectorPoint2fCorners,patternWasFound); #if TestCorrectingChessboardUseCameracv::imshow(0, srcMat);cv::imshow(4, srcMat2);if(!patternWasFound){cv::imshow(5, srcMat3);cv::waitKey(1);continue;} #endif// 步骤六进一步提取亚像素角点cv::TermCriteria criteria(CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, // 类型30, // 参数二: 最大次数0.001); // 参数三迭代终止阈值/*#define CV_TERMCRIT_ITER 1 // 终止条件为: 达到最大迭代次数终止#define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER //#define CV_TERMCRIT_EPS 2 // 终止条件为: 迭代到阈值终止*/qDebug() __FILE__ __LINE__ vectorPoint2fCorners.size();cv::cornerSubPix(grayMat,vectorPoint2fCorners,cv::Size(5, 5),cv::Size(-1, -1),criteria);// 步骤七绘制棋盘点cv::drawChessboardCorners(srcMat3,cv::Size(chessboardColCornerCount, chessboardRowCornerCount),vectorPoint2fCorners,patternWasFound);cv::imshow(5, srcMat3); // cv::waitKey(0);// 步骤八角点对应的三维坐标一张图一组std::vectorstd::vectorcv::Point3f vectorObjectPoint;std::vectorcv::Point3f objectPoints; // 三维世界坐标系for(int i 0; i chessboardRowCornerCount; i){for(int j 0; j chessboardColCornerCount; j){objectPoints.push_back(cv::Point3f(j, i, 0));}}vectorObjectPoint.push_back(objectPoints);// 步骤九图像识别出来的角点一张图一组std::vectorstd::vectorcv::Point2f vectorImagePoint;vectorImagePoint.push_back(vectorPoint2fCorners);// 步骤十计算内参和畸变系数cv::Mat cameraMatrix; // 相机矩阵接收输出cv::Mat distCoeffs; // 畸变系数接收输出cv::Mat Rotate; // 旋转量接收输出cv::Mat Translate; // 偏移量接收输出cv::calibrateCamera(vectorObjectPoint,vectorImagePoint,grayMat.size(),cameraMatrix,distCoeffs,Rotate,Translate);std::cout cameraMatrix: std::endl;std::cout cameraMatrix std::endl;std::cout distCoeffs: std::endl;std::cout distCoeffs std::endl;std::cout Rotate: std::endl;std::cout Rotate std::endl;std::cout Translate: std::endl;std::cout Translate std::endl;// 步骤十一畸变图像校准cv::Mat dstMat;cv::undistort(srcMat, dstMat, cameraMatrix, distCoeffs);cv::imshow(6, dstMat);#if TestCorrectingChessboardUseCameracv::waitKey(1);} // cv::imshow(_windowTitle.toStdString(), dstMat); #elsecv::waitKey(0); #endif }对应工程模板v1.68.0 入坑 入坑一无法识别图像 问题 无法识别。    原理 要全部棋盘视野内且可以识别这个确实识别不了。 解决 换图重新来过这是笔者随便找的图。 入坑二校准之后四角不准 问题 四角明显不对。    原理 这里需要多张图在能识别的情况下覆盖所有区域。 解决 先这样下次实际标定的时候再多张图看是否还存在该问题。 上一篇《OpenCV开发笔记七十六相机标定一识别棋盘并绘制角点》 下一篇持续补充中… 若该文为原创文章转载请注明原文出处 本文章博客地址https://hpzwl.blog.csdn.net/article/details/136616551
http://www.dnsts.com.cn/news/65900.html

相关文章:

  • 权威发布公众号图片网站seo排名优化
  • 长春火车站到龙嘉机场高铁时刻表wordpress添加标签插件
  • 长春建站网站整站优化推广方案
  • 网站效果案例wordpress 二次元
  • 传奇做网站网站下载app免费
  • 网站后台建设教程下载网站域名建设
  • 如何申请自己的网站网站排名下降的原因
  • 做长页网站重庆市互联网协会
  • 合肥网站建设司图阿里巴巴网站开发工具
  • 可以做免费推广的网站吗关键词都有哪些
  • 厦门软件园网站建设企业网站建设人员分析
  • 如何做网站挂qq定制软件下载
  • 织梦首饰网站模板免备案域名购买平台
  • 杭州营销网站建设公司仓库管理erp自学视频
  • 做网站内容都有哪些深圳网站开发费用
  • 网站的建设和编程网站建设策目标
  • 传媒网站源码wordpress里面的附件如何导出
  • 陕西省住房和城乡建设厅门户网站中国十大设计名校
  • 企业网站建站 合肥swoole+wordpress
  • 网站建成怎么做相亲网站
  • 盐城网站开发效果万网网站搬家
  • 什么是网站的空间网站建网站建设和优
  • 搜索排名优化网站排名优化网页设计与网站建设实战大全
  • 做网站需要什么花费如何建设网站的能力
  • 高端网站建设页面企业网网站
  • 永久免费ppt下载网站网页制作模板源码
  • 写作网站保底和全勤的区别新网站不被收录的原因
  • 北京网站推广公司排名wordpress外贸主题
  • 代做网站名称优化卸载ghost版wordpress
  • 自己做网站外包wordpress自动保存编辑器图片