opencv程序出现未经处理的异常

觅路人 2017-05-16 07:12:27
运行下面程序,无法通过编译,提示
以下是源代码,请问是什么原因造成的?如何解决?
// ImageWarping.cpp : 定义控制台应用程序的入口点。
//程序用来处理图片的变换问题

#include "stdafx.h"

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

void RotateImage(IplImage* img, IplImage* img_rotate, int degree);

int main()
{
IplImage* IplI = cvLoadImage("Monkey.jpg", 1);
if (IplI == NULL)
{
fprintf(stderr, "Can not load image.\n");
return -1;
}
IplImage* IplI_rotate = cvCreateImage(IplI->nSize, IplI->depth, IplI->nChannels);
RotateImage(IplI, IplI_rotate, 30);

//显示图像
cvNamedWindow("Initial Image");
cvNamedWindow("Rotated Image");
cvShowImage("Initial Image", IplI);
cvShowImage("Rotated Image", IplI_rotate);
//cvSaveImage("F:\\C++\\opencv\\Figures\\Monkey1.jpg", IplI);
cvWaitKey();
cvReleaseImage(&IplI);
cvReleaseImage(&IplI_rotate);
cvDestroyWindow("Initial Image");

return 0;
}

//图像旋转变换函数
void RotateImage(IplImage* img, IplImage* img_rotate, int degree)
{
//确定旋转中心,此处为图像中心
CvPoint2D32f center;
center.x = float(img->width / 2.0 + 0.5);
center.y = float(img->height / 2.0 + 0.5);

//计算二维旋转的仿射变换矩阵
float m[6];
CvMat M = cvMat(2, 3, CV_32F, m); // 将m转换为2*3的矩阵
cv2DRotationMatrix(center, degree, 1, &M); //计算旋转degree情况下的仿射矩阵

//仿射变换函数
//CV_INTER_LINEAR:线性差值
//CV_WARP_FILL_OUTLIERS:填充所有输出图像的象素。
//如果部分象素落在输入图像的边界外,那么它们的值设定为 fillval.
//默认情况:CvScalar fillval = cvScalarAll(0);
cvWarpAffine(img, img_rotate, &M, CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS, cvScalarAll(0));
}
...全文
1051 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
觅路人 2017-05-17
  • 打赏
  • 举报
回复
上述问题已解决,问题出在cvCreateImage函数参数上,按照目前的代码会使得IplI_rotate图像的height = 0,这样会在显示图像中Assertion(height >0 && width > 0)有误,无法显示图像; 正确的代码如下,创建一个和原图一样大小的图像:
IplImage* IplI_rotate = cvCreateImage(cvSize(IplI->width,IplI->height), IplI->depth, IplI->nChannels);
觅路人 2017-05-17
  • 打赏
  • 举报
回复
反馈信息
Mr_Zhouzl 2017-05-17
  • 打赏
  • 举报
回复
贴出控制台信息,opencv没有调试信息,一般看控制台

4,448

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧