opencv 截取图片一部分_opencv从图像中截取部分作为子图像 | 学步园

本文提供了一个简单的C++程序示例,演示如何使用OpenCV库从图像中截取一部分作为子图像,并将该子图像保存为新的文件。通过设置ROI(感兴趣区域)并使用`cvSetImageROI`、`cvCopy`和`cvResetImageROI`函数,实现了图像的截取和复制操作。
摘要由CSDN通过智能技术生成

简单的小例程,留作用从图像中截取部分作为子图像,并保存起来

#include

#include

#include

#include

using namespace std;

void GetImageRect(IplImage* orgImage, CvRect rectInImage, IplImage* imgRect);

int main(int argc , char** argv )

{

IplImage* src;

src = cvLoadImage(argv[1], 0);

cvNamedWindow("src", 1);

cvShowImage("src", src);

IplImage* dst;

CvRect rect = cvRect(0, 0, 0.5*src->width, 0.5*src->height);

CvSize dst_size;

dst_size.height = rect.height;

dst_size.width = rect.width;

dst = cvCreateImage(dst_size, IPL_DEPTH_8U, src->nChannels);

GetImageRect(src, rect, dst);

cvNamedWindow("dst",2);

cvShowImage("dst",dst);

cvSaveImage("dst.jpg", dst);

cvWaitKey(0);

cvDestroyWindow("src");

cvDestroyWindow("dst");

cvReleaseImage(&src);

cvReleaseImage(&dst);

return 0;

}

void GetImageRect(IplImage* orgImage, CvRect rectInImage, IplImage* imgRect)

{

//从图像orgImage中提取一块rectInImage子图像imgRect

//IplImage *result = imgRect;

CvSize size;

size.width = rectInImage.width;

size.height = rectInImage.height;

//从图像中提取子图像

cvSetImageROI(orgImage, rectInImage);

cvCopy(orgImage, imgRect);

cvResetImageROI(orgImage);

}

下面是一个makefile

CFLAGS = `pkg-config --cflags opencv`

LIBS = `pkg-config --libs opencv`

obj = harris.o

codebook: $(obj)

g++ $(CFLAGS) -g -o harris $(obj) $(LIBS)

harris.o:harris.cpp

g++ $(CFLAGS) -g -c harris.cpp $(LIBS)

.PHONY:clean

clean:

rm *.o codebook

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值