真心寻求编程问题,想在一幅彩色图像上截图某个部分的图像,存为另一幅图像,c语言编写,可借助opencv

2025-06-22 08:15:42
推荐回答(1个)
回答1:

void CFRDemo1Dlg::OnButton1()
{
    //加载源图像CV_LOAD_IMAGE_COLOR或者CV_LOAD_IMAGE_GRAYSCALE
    IplImage *pSrc = cvLoadImage("lcl.jpg", CV_LOAD_IMAGE_GRAYSCALE);
    
    if(!pSrc)
    {
        MessageBox("图像文件加载失败!","错误",MB_ICONERROR|MB_OK);
        return ;
    }
    CvSize size= cvSize(40,50);//区域大小
    cvSetImageROI(pSrc,cvRect(60,70,size.width, size.height));//设置源图像ROI
    IplImage* pDest = cvCreateImage(size,pSrc->depth,pSrc->nChannels);//创建目标图像
    cvCopy(pSrc,pDest); //复制图像
    cvResetImageROI(pDest);//源图像用完后,清空ROI
    cvSaveImage("Roi.jpg",pDest);//保存目标图像
}


昨天写了个从视频流中截取ROI的代码,不过是C++。 发现你要C代码,我就从网上找了一个,非原创。