2

我正在尝试制作一个可以拍摄图像并放大其中一部分的块。为了做到这一点,我正在使用 OpenCV(我是新手)。

我的问题是,每当我使用 16 位签名 (cv_16sC1) 运行函数时,我都会收到错误 OpenCV Error: Unsupported format or combination of formats () in cvGetRectSubPix, file /media/virtex4/re/OpenCV-2.4.0/modules /imgproc/src/samplers.cpp,第 573 行。

首先,有谁知道这个功能是否真的适用于那个位深度?有没有办法查出来?

  cv::Mat image_1_in(video_frame->_width, video_frame->_height, CV_16SC1, video_frame->GetPointerToYLine(0));
  cv::Mat image_1_out(video_frame->_width, video_frame->_height, CV_16SC1, video_frame_out->GetPointerToYLine(0));

  cv::Mat temp_image;

  getRectSubPix(image_1_in, cv::Size(100, 200), cv::Point2f(200, 200), temp_image);
  resize(temp_image, image_1_out, Size(video_frame_out->_width, video_frame_out->_height));

这是许多尝试之一,每个尝试都给出相同的错误(直到我将格式更改为没有给出错误的 CV_32f)......

4

1 回答 1

4

它似乎getRectSubPix只适用于 {CV_8U, CV_8U}, {CV_32F, CV_32F} 和 {CV_8U, CV_32F} 的 {src,dst} 类型。

我深入研究了源代码并弄清楚了这一点。API 参考中没有规范。

于 2012-11-14T06:10:54.313 回答