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

会建网站的人wordpress安装系统

会建网站的人,wordpress安装系统,外贸网站建设便宜,现货市场交易平台一、介绍 图像拼接. 二、分步实现 要实现图像拼接#xff0c;简单来说有以下几步#xff1a; 对每幅图进行特征点提取对对特征点进行匹配进行图像配准把图像拷贝到另一幅图像的特定位置对重叠边界进行特殊处理 PS#xff1a;需要使用低版本的opencv#xff0c;否则无法使…一、介绍 图像拼接. 二、分步实现 要实现图像拼接简单来说有以下几步 对每幅图进行特征点提取对对特征点进行匹配进行图像配准把图像拷贝到另一幅图像的特定位置对重叠边界进行特殊处理 PS需要使用低版本的opencv否则无法使用特征角点提取算子。 #include highgui/highgui.hpp #include opencv2/nonfree/nonfree.hpp #include opencv2/legacy/legacy.hpp #include iostream using namespace cv; using namespace std;typedef struct {Point2f left_top;Point2f left_bottom;Point2f right_top;Point2f right_bottom; }four_corners_t;four_corners_t corners;void CalcCorners(const Mat H, const Mat src) {// 左上角(0, 0, 1)double v2[3] { 0, 0, 1 };double v1[3] { 0 };Mat V2 Mat(3, 1, CV_64FC1, v2);Mat V1 Mat(3, 1, CV_64FC1, v1);V1 H * V2;corners.left_top.x v1[0] / v1[2];corners.left_top.y v1[1] / v1[2];// 左下角(0, src.rows, 1)v2[0] 0;v2[1] src.rows;v2[2] 1;V2 Mat(3, 1, CV_64FC1, v2);V1 Mat(3, 1, CV_64FC1, v1);V1 H * V2;corners.left_bottom.x v1[0] / v1[2];corners.left_bottom.y v1[1] / v1[2];// 右上角(src.cols, 0, 1)v2[0] src.cols;v2[1] 0;v2[2] 1;V2 Mat(3, 1, CV_64FC1, v2);V1 Mat(3, 1, CV_64FC1, v1);V1 H * V2;corners.right_top.x v1[0] / v1[2];corners.right_top.y v1[1] / v1[2];// 右下角(src.cols, src.rows, 1)v2[0] src.cols;v2[1] src.rows;v2[2] 1;V2 Mat(3, 1, CV_64FC1, v2);V1 Mat(3, 1, CV_64FC1, v1);V1 H * V2;corners.right_bottom.x v1[0] / v1[2];corners.right_bottom.y v1[1] / v1[2]; }void OptimizeSeam(Mat img1, Mat trans, Mat dst) {int start MIN(corners.left_top.x, corners.left_bottom.x);//开始位置即重叠区域的左边界 double processWidth img1.cols - start; // 重叠区域的宽度 int rows dst.rows;int cols img1.cols; // 注意是列数*通道数double alpha 1; // img1中像素的权重 for (int i 0; i rows; i){uchar* p img1.ptruchar(i); // 获取第i行的首地址uchar* t trans.ptruchar(i);uchar* d dst.ptruchar(i);for (int j start; j cols; j){// 如果遇到图像trans中无像素的黑点则完全拷贝img1中的数据if (t[j * 3] 0 t[j * 3 1] 0 t[j * 3 2] 0){alpha 1;}else{// img1中像素的权重与当前处理点距重叠区域左边界的距离成正比实验证明这种方法确实好 alpha (processWidth - (j - start)) / processWidth;}d[j * 3] p[j * 3] * alpha t[j * 3] * (1 - alpha);d[j * 3 1] p[j * 3 1] * alpha t[j * 3 1] * (1 - alpha);d[j * 3 2] p[j * 3 2] * alpha t[j * 3 2] * (1 - alpha);}} }int main(int argc, char* argv[]) {Mat image01 imread(image2.png, 1); //右图Mat image02 imread(image1.png, 1); //左图imshow(p2, image01);imshow(p1, image02);// 灰度图转换 Mat image1, image2;cvtColor(image01, image1, CV_RGB2GRAY);cvtColor(image02, image2, CV_RGB2GRAY);// 提取特征点SurfFeatureDetector Detector(2000);vectorKeyPoint keyPoint1, keyPoint2;Detector.detect(image1, keyPoint1);Detector.detect(image2, keyPoint2);// 特征点描述SurfDescriptorExtractor Descriptor;Mat imageDesc1, imageDesc2;Descriptor.compute(image1, keyPoint1, imageDesc1);Descriptor.compute(image2, keyPoint2, imageDesc2);FlannBasedMatcher matcher;vectorvectorDMatch matchePoints;vectorMat train_desc(1, imageDesc1);matcher.add(train_desc);matcher.train();matcher.knnMatch(imageDesc2, matchePoints, 2);cout total match points: matchePoints.size() endl;// Lowes algorithm,获取优秀匹配点vectorDMatch GoodMatchePoints;for (int i 0; i matchePoints.size(); i){if (matchePoints[i][0].distance 0.4 * matchePoints[i][1].distance){GoodMatchePoints.push_back(matchePoints[i][0]);}}// draw matchMat first_match;drawMatches(image02, keyPoint2, image01, keyPoint1, GoodMatchePoints, first_match);imshow(first_match , first_match);vectorPoint2f imagePoints1, imagePoints2;for (int i 0; i GoodMatchePoints.size(); i){imagePoints2.push_back(keyPoint2[GoodMatchePoints[i].queryIdx].pt);imagePoints1.push_back(keyPoint1[GoodMatchePoints[i].trainIdx].pt);}// 获取图像1到图像2的投影映射矩阵 尺寸为3*3 Mat homo findHomography(imagePoints1, imagePoints2, CV_RANSAC);cout 变换矩阵为\n homo endl endl; // 输出映射矩阵 // 计算配准图的四个顶点坐标CalcCorners(homo, image01);cout left_top: corners.left_top endl;cout left_bottom: corners.left_bottom endl;cout right_top: corners.right_top endl;cout right_bottom: corners.right_bottom endl;// 图像配准 Mat imageTransform1, imageTransform2;warpPerspective(image01, imageTransform1, homo, Size(MAX(corners.right_top.x, corners.right_bottom.x), image02.rows));// warpPerspective(image01, imageTransform2, adjustMat*homo, Size(image02.cols*1.3, image02.rows*1.8));imshow(直接经过透视矩阵变换, imageTransform1);// 创建拼接后的图,需提前计算图的大小int dst_width imageTransform1.cols; // 取最右点的长度为拼接图的长度int dst_height image02.rows;Mat dst(dst_height, dst_width, CV_8UC3);dst.setTo(0);imageTransform1.copyTo(dst(Rect(0, 0, imageTransform1.cols, imageTransform1.rows)));image02.copyTo(dst(Rect(0, 0, image02.cols, image02.rows)));imshow(b_dst, dst);// 优化拼接处OptimizeSeam(image02, imageTransform1, dst);imshow(dst, dst);waitKey();return 0; }三、利用stitch实现 #include opencv2/imgcodecs.hpp #include opencv2/highgui.hpp #include opencv2/stitching.hpp #include iostreamusing namespace std; using namespace cv;int main(int argc, char* argv[]) {Mat img1 imread(image1.png, cv::IMREAD_COLOR);Mat img2 imread(image2.png, cv::IMREAD_COLOR);vectorMat imgs;imgs.push_back(img1);imgs.push_back(img2);Mat pano;PtrStitcher stitcher Stitcher::create(Stitcher::PANORAMA);Stitcher::Status status stitcher-stitch(imgs, pano);if (status ! Stitcher::OK){cout Cant stitch images, error code int(status) endl;return EXIT_FAILURE;}string result_name result1.jpg;imwrite(result_name, pano);cout stitching completed successfully\n result_name saved!;return EXIT_SUCCESS; }
http://www.yutouwan.com/news/433517/

相关文章:

  • vs2017html5网站开发WordPress图片关闭永久链接
  • 有没有什么做统计的网站全国建设厅网站
  • 宁夏网站建设一条龙郑州做网站华久科技
  • 查互做蛋白的网站wordpress好用
  • 开发小型门户网站的方法 步骤国内网站
  • wordpress安装ssl后网站404网站顶部导航
  • 网站平台建设实训总结郑州专业网站制作服务费用
  • 免费建网站无广告婚恋网站上认识人 带你做原油交易
  • 义乌做网站哪家好wordpress中国区官方论坛
  • 网站网页翻页设计微信网站主题
  • 网站开发可以学吗怎样建设VR网站
  • wordpress搭建多个购物网站国外网站建设现状
  • 怎么将网站做成小程序石家庄新华区网站建设
  • 公司 网站建设 会计科目个人网页制作模板三张
  • 连锁销售网站制作支付网站建设要求
  • 网站建设与管理清考作业南京制作网页学校
  • 租房网站建设多少钱软件商店下载官网
  • diango做的网站怎么用房地产开发公司网站建设方案模板
  • 常见的网站名称有哪些个人网站的搭建
  • 深圳注明企业网站设计深圳市公司网站建设公司
  • 网站开发 简单重庆哪家网站
  • 做网站没有公网做购彩网站是怎么盈利的
  • 购物网站html模板免费制作网页
  • 品牌网站建设流程一个网站两个域名
  • 网站开发培训机构哪个好北京电商公司有哪些
  • 中国建设银行网站网上业务服务范围天华建筑设计公司官网
  • 网站信息化建设总结用家用电脑建设网站
  • 外贸网站建设哪家实惠鞍山便民信息平台
  • 汽车网站建设可行性分析开发外包公司
  • 浙江建设集团网站首页网络推广方案文案