我刚开始使用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)
我希望这可以帮到你。
cv::Range
代码?如果我的回答有帮助,请点击接受答案。 - Michael Koval