opencv - 调整图像大小并更改其深度

标签 opencv

我需要调整 IplImage 的大小并将其转换为不同深度的 CvMat,这是我目前编写的代码:

void cvResize2(IplImage *imgSrc, IplImage *imgDst)
{
    IplImage *imgTemp;
    imgTemp = cvCreateImage( cvGetSize( imgSrc ), IPL_DEPTH_64F, 1 );

    cvScale( imgSrc, imgTemp, 1/255., 0.0 );
    cvResize( imgTemp, imgDst );
}

源图像是灰度图像,目标图像是 64F 位深。 cvScale 仅在相同大小的图像之间缩放,因此是临时图像。

程序在调用 cvResize 时出现以下异常:

OpenCV Error: Assertion failed (func != 0) in resize, file /tmp/buildd/opencv-2.1.0/src/cv/cvimgwarp.cpp, line 1488
terminate called after throwing an instance of 'cv::Exception'
what():  /tmp/buildd/opencv-2.1.0/src/cv/cvimgwarp.cpp:1488: error: (-215) func != 0 in function resize

我不明白为什么,我已经检查过图像是否符合强加的条件

  • src: 512x384, 8 深度
  • tmp:512x384,64 深度
  • dst:64x64,64 深度

有什么线索吗? 提前致谢

最佳答案

您可能发现了一个错误。我也可以在我这边重现它(Ubuntu 64 位,OpenCV-2.1.0)。如果您使用 32 位浮点精度,它可以工作,但使用 64 位 float 时会崩溃。我的建议是将您的 OpenCV 更新到最新版本并查看问题是否消失。如果不是,则在 Debug模式下构建库并单步执行抛出断言的函数。通过查看 cvimgwarp.cpp 中的罪魁祸首源代码,它似乎无法找到用于目标图像的插值方法。

关于opencv - 调整图像大小并更改其深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7385465/

相关文章:

python - OpenCV如何平滑轮廓,降低噪声

android - 使用OpenCV在Android上进行多对象检测

c++ - 使用 OpenCV 和 C++ 从图像中提取子图像

opencv VideoCapture.set 灰度?

java - Android OpenCV - 使用 HoughCircles 检测点的问题

python - 使用Fast API接收图像,然后使用cv2处理它,然后将其返回

python - 属性错误 : 'module' object has no attribute 'SVM_LINEAR'

java - 用于从数据库进行人脸检测和识别的计算机视觉应用程序(+Web 界面)

MATLAB - 捕获视频流(MJPEG、rtsp、mpeg)

opencv - 0x10012c5d(highgui110.dll)的未处理异常