opencv图像覆盖运行出现如下错误,程序编译没有错误,但运行后控制台出现如下错误,求解答
OpenCV Error: Assertion failed (!(dsize == Size()) || (inv_scale_x > 0 && inv_sc
ale_y > 0)) in unknown function, file C:\slave\WinInstallerMegaPack\src\opencv\m
odules\imgproc\src\imgwarp.cpp, line 1433
代码如下
#include"highgui.h"
#include"cv.h"
#include<iostream>
using namespace std;
int main()
{
IplImage * img1 = cvLoadImage("F:\\杂\\图1.png",1);//被复制的图像
IplImage * img2 = cvLoadImage("F:\\杂\\图2.jpg",1); //代表目标图像
int d=img2->depth;//目标图像的深度
int n=img2->nChannels;//目标图像的通道数
IplImage* img3 =NULL;
double bili1=50/img1->width;//宽变得比例
double bili2=50/img1->height;//高的比例
CvSize size;
size.width=(int)img1->width*bili1;
size.height=(int)img1->height*bili2;
img3=cvCreateImage(size,d,n);
cvResize(img1,img3,CV_INTER_LINEAR );
CvSize size1=cvGetSize(img3);
CvRect roi3=cvRect(0,0,size1.width,size1.height);//获得img3的感兴趣区域
cvSetImageROI(img3, roi3);//设置感兴趣区域图3的
CvRect roi2=cvRect(0,0,50,50);
cvSetImageROI(img2, roi2);//同上
cvCopy(img2, img3);
cvResetImageROI(img3);
cvResetImageROI(img2);
cvNamedWindow("result");
cvShowImage("result", img2);
cvWaitKey(-1);
cvReleaseImage(&img2);
//cvReleaseImage(&img1);
cvDestroyAllWindows();
return 0;
}
我这个程序的目的是把img1整张图按比例缩小后放到img2的指定位置,但我不知道由于什么原因会出现上述错误,求各位帮忙解答 展开
#include"highgui.h"
#include"cv.h"
#include<iostream>
using namespace std;
int main()
{
IplImage * img1 = cvLoadImage("./TestImg/111.bmp",1);//被复制的图像
IplImage * img2 = cvLoadImage("./TestImg/222.bmp",1); //代表目标图像
int d=img2->depth;//目标图像的深度
int n=img2->nChannels;//目标图像的通道数
IplImage* img3 =NULL;
double bili1=1.0*50/img1->width;//宽变得比例------你原来的整形除法结果分子小于分母,等于0.
double bili2=1.0*50/img1->height;//高的比例-------。。。
CvSize size;
size.width=(int)img1->width*bili1;
size.height=(int)img1->height*bili2;
img3=cvCreateImage(size,d,n);
cvResize(img1,img3,CV_INTER_LINEAR );
CvSize size1=cvGetSize(img3);
CvRect roi3=cvRect(0,0,size1.width,size1.height);//获得img3的感兴趣区域
cvSetImageROI(img3, roi3);//设置感兴趣区域图3的
CvRect roi2=cvRect(0,0,50,50);
cvSetImageROI(img2, roi2);//同上
cvCopy(img2, img3);
cvResetImageROI(img3);
cvResetImageROI(img2);
cvNamedWindow("result");
cvShowImage("result", img2);
cvWaitKey(-1);
cvReleaseImage(&img2);
//cvReleaseImage(&img1);
cvDestroyAllWindows();
return 0;
}
不行啊程序改后就直接停止运作了