luckilywm
luckilywm
2019-04-02 23:38

C++ opencv对图像使用硬拼接如何解决无缝融合问题

  • c++

请问各位大佬,C++ opencv对图像使用硬拼接,如何将拼接的边缘进行融合。因为图像的特征过少无法使用opencv里的Stitcher。所以求各位大佬解答,能附上解决代码最好
硬拼接核心代码:

    double width, height;
    //新图像的高度和宽度
    width = double(paletteImageRam0->width);
    height = double(paletteImageRam0->height + offset_px);  

    //生成一个拼接后的容器图片
    IplImage* des = cvCreateImage(cvSize(width, height), paletteImageRam0->depth, paletteImageRam0->nChannels);  
    cvSetImageROI(des, cvRect(0, 0, paletteImageRam0->width, paletteImageRam0->height)); //设置容器图片中感兴趣的部分,前两个左边0,0代表感兴趣的区域的起点,后两个代表感兴趣区域的宽高                                                 
    cvCopy(paletteImageRam0, des);      //将第一幅图像放到感兴趣的区域里面,也就是第一个方格
    cvResetImageROI(des);

    //待拼接图像
    int offset_px_y = offset_px * i ;
    cvSetImageROI(des, cvRect(0, offset_px_y, paletteImageRam1->width, paletteImageRam1->height));
    cvCopy(paletteImageRam1, des);      //将待拼接图像放到感兴趣的区域里面
    cvResetImageROI(des);

拼接效果图如下:
图片说明

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

0条回答