我对 OpenCV 很陌生(两天前开始使用它),我正在尝试从 Kinect 获得的深度图像中剪切手部图像,我需要手部图像来进行手势识别。我有图像作为一种cv::Mat
类型。我的问题是:
- 有没有办法转换
cv::Mat
为,cvMat
以便我可以使用cvGetSubRect
方法来获取感兴趣的区域? - 有什么方法
cv::Mat
可以用来获取图像的一部分吗?
我想使用IplImage
,但我在某个地方读到cv::Mat
了现在首选的方式。
您可以在以下位置使用重载函数调用运算符cv::Mat
:
cv::Mat img = ...;
cv::Mat subImg = img(cv::Range(0, 100), cv::Range(0, 100));
查看OpenCV 文档以获取更多信息以及采用cv::Rect
. 请注意,使用这种形式的切片会创建一个新的矩阵头,但不会复制数据。
也许另一种方法可能是:
//Create the rectangle
cv::Rect roi(10, 20, 100, 50);
//Create the cv::Mat with the ROI you need, where "image" is the cv::Mat you want to extract the ROI from
cv::Mat image_roi = image(roi)
我希望这会有所帮助。