zoukankan      html  css  js  c++  java
  • OpenCV实现将三幅图像合并在一张图片

    这篇文章还是我开通这个博客以来的第一篇文章,虽然我现在已经不再做图像方面的东西,但是看到这篇下面有很多留言,我觉得是这篇文章的题目给大家造成了误解。大家需要了解的应该是不同视角下的图像拼接,而我这里只是简简单单的将两个图像凑在一起,期间没有任何图像特征提取的方法在这里,因此,对于初学OpenCV的人来说,这里的代码可以作为入门级教程。


    下面是几个知识点:

    (1)路径的设置方式:通常情况下,需要把包含图片的文件夹保存到工程目录下,也就是保证和Debug在同一个根目录下面;

    (2)cvSetImageROI函数和cvCopy函数的用法:

    cvSetImageROI(IplImage*dst,cvRect(左边界,上边界,宽度,高度))。他的作用是把图像在图像dst中开辟出cvRect矩形框区域大小的内存空间,然后cvCopy(IplImage*src,IplImage*dst)函数会将源图像src复制到目标图像dst中。

    *****************/
    #include
    <cv.h>
    #include
    <highgui.h>
    int main()
    {
    char* filePath ="D:/图片库/Lena.jpg";
    IplImage
    * srcImg = cvLoadImage(filePath);
    IplImage
    * greyImg = cvCreateImage(cvGetSize(srcImg), srcImg->depth, 1);
    IplImage
    * cannyImg = cvCreateImage(cvGetSize(greyImg), srcImg->depth, 1);
    CvSize dstSize;
    dstSize.width
    = srcImg->width *3.0;
    dstSize.height
    = srcImg->height;
    IplImage
    * dstImg = cvCreateImage(dstSize, srcImg->depth, srcImg->nChannels);
    cvZero(dstImg);
    cvConvertImage(srcImg, greyImg);
    cvCanny(greyImg, cannyImg,
    150, 100);
    //----------------------------------
    //载入原图像到目标图像
    cvSetImageROI(dstImg, cvRect(0, 0, srcImg->width, srcImg->height));
    cvCopy(srcImg, dstImg);
    cvResetImageROI(dstImg);
    //载入灰度图像到目标图像
    cvSetImageROI(dstImg, cvRect(srcImg->width, 0, srcImg->width, srcImg->height));
    dstImg
    ->nChannels =1;
    cvCopy(greyImg, dstImg);
    cvResetImageROI(dstImg);
    //载入边缘检测图像到目标图像
    cvSetImageROI(dstImg, cvRect((srcImg->width) *2.0, 0, srcImg->width, srcImg->height));
    dstImg
    ->nChannels =1;
    cvCopy(cannyImg, dstImg);
    cvResetImageROI(dstImg);
    //---------------------------------------
    cvNamedWindow("dstImg");
    cvShowImage(
    "dstImg", dstImg);
    cvWaitKey(
    0);
    cvReleaseImage(
    &srcImg);
    cvReleaseImage(
    &greyImg);
    cvReleaseImage(
    &cannyImg);
    cvReleaseImage(
    &dstImg);
    cvDestroyWindow(
    "dstImg");
    return0;
  • 相关阅读:
    CodeForces.1174D.EhabandtheExpectedXORProblem(构造前缀异或和数组)
    HDU-6187.DestroyWalls(最大生成树)
    HDU.6186.CSCource.(前缀和数组和后缀和数组)
    <每日一题>Day 9:POJ-3281.Dining(拆点 + 多源多汇+ 网络流 )
    <每日一题> Day8:CodeForces-996A.Hit the Lottery(贪心)
    最小割 + 网络流变体
    <每日一题> Day7:CodeForces-1166C.A Tale of Two Lands (二分 + 排序)
    <每日一题> Day6:HDU递推专题完结
    <每日一题> Day5:简单递推两题
    POJ-3122.Pie(二分法最大化平均值)
  • 原文地址:https://www.cnblogs.com/CBDoctor/p/2180998.html
Copyright © 2011-2022 走看看