c - openCV 在 C 中获取子图像

标签 c image opencv

我在 C 中使用 OpenCV 进行图像处理。如果文档中回答了这个问题,请原谅我,但我发现 OpenCV 文档的格式非常糟糕且难以阅读。

我有一个从图像文件中提取的 CvMat*,如下所示:

CvMat* mat = cvLoadImageM((char*) filename, CV_LOAD_IMAGE_COLOR);

我需要做的是通过裁剪出某个有界区域来获得它的子图像。一个合乎逻辑的命令可能是:

CvMat* subMat = cvGetSubImage(mat, minx, maxx, miny, maxy);

其中 minxmaxxminymaxy 定义裁剪区域的边界。是否有内置方法可以轻松做到这一点?

最佳答案

看看http://nashruddin.com/OpenCV_Region_of_Interest_(ROI)/

教程在其中对感兴趣区域执行以下操作:

cvSetImageROI(img1, cvRect(10, 15, 150, 250));
IplImage *img2 = cvCreateImage(cvGetSize(img1),
                           img1->depth,
                           img1->nChannels);
cvCopy(img1, img2, NULL);
cvResetImageROI(img1);

OpenCV 内置了设置您关心的区域并将该区域从图像中复制出来的功能,就像您想要实现的那样。

关于c - openCV 在 C 中获取子图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11725990/

相关文章:

android - 可以将动态壁纸设置为背景吗?

c++ - OpenCV - 具有 filter2D 和双值的 gaussianKernel

java - 如何对openCV中的图片应用高斯模糊?

c - 用汇编代替c代码提高性能的简单例子是什么?

java - 如何获取正在运行的C程序的stdin和stdout

c - 奇怪的 free() 无效指针 C

html - 想让东西居中

c - C 中的所有权约定

image - 使用 png 或 svg 图像作为 graphviz 节点

c++ - 如果我使用UMat并在opencv中关闭GPU处理,速度会有所不同吗?