OpenCV一个窗口显示多张图片
来源:互联网 发布:魔笛手的软件 编辑:程序博客网 时间:2024/05/01 20:44
- 原文地址
- http://blog.csdn.net/augusdi/article/details/9019473
- void
cvShowManyImages( char*title, intnArgs, ...) - {
-
-
// img - Used for getting the arguments -
IplImage *img; -
-
// DispImage - the image in which input images are to be copied -
IplImage *DispImage; -
-
int size; -
int i; -
int m, n; -
int x, y; -
-
// w - Maximum number of images in a row -
// h - Maximum number of images in a column -
int w, h; -
-
// scale - How much we have to resize the image -
float scale; -
int max; -
-
// If the number of arguments is lesser than 0 or greater than 12 -
// return without displaying -
if(nArgs <= 0) -
{ -
printf("Number of );arguments too small....n" -
return; -
} -
else if(nArgs > 12) -
{ -
printf("Number of );arguments too large....n" -
return; -
} -
// Determine the size of the image, and the number of rows/cols from number of arguments -
else if (nArgs == 1) -
{ -
w = h = 1; -
size = 300; -
} -
else if (nArgs == 2) -
{ -
w = 2; h = 1; -
size = 300; -
} -
else if (nArgs == 3 || nArgs == 4) -
{ -
w = 2; h = 2; -
size = 300; -
} -
else if (nArgs == 5 || nArgs == 6) { -
w = 3; h = 2; -
size = 200; -
} -
else if (nArgs == 7 || nArgs == 8) -
{ -
w = 4; h = 2; -
size = 200; -
} -
else -
{ -
w = 4; h = 3; -
size = 150; -
} -
-
// Create a new 3 channel image0 -
DispImage = cvCreateImage( cvSize( 100+ size*w, 60 + size*h), 8, 3 ); -
-
// Used to get the arguments passed -
va_list args; -
va_start(args, nArgs); -
-
// Loop for nArgs number of arguments -
for (i = 0, m = 20, n = 20; i < nArgs; i++, m += (20 + size)) -
{ -
// Get the Pointer to the IplImage -
img = va_arg(args, IplImage*); -
-
// Check whether it is NULL or not -
// If it is NULL, release the image, and return -
if(img == 0) -
{ -
printf("Invalid arguments" ); -
cvReleaseImage(&DispImage); -
return; -
} -
-
// Find the width and height of the image -
x = img->width; -
y = img->height; -
-
// Find whether height or width is greater in order to resize the image -
max = (x > y)? x: y; -
-
// Find the scaling factor to resize the image -
scale = (float) ( float)( max / size ); -
-
// Used to Align the images -
if( i % w == 0 && m!= 20) -
{ -
m = 20; -
n+= 0 + size; -
} -
-
// Set the image ROI to display the current image -
//cvSetImageROI(DispImage, cvRect(m, n, (int)( x/scale ), (int)( y/scale ))); -
cvSetImageROI(DispImage, cvRect(m, n, (int)( x/scale int)(), ( y/scale ))); -
// cout<<"x="<<m<<"y="<<n<<endl; -
-
// Resize the input image and copy the it to the Single Big Image -
cvResize(img, DispImage); -
-
// Reset the ROI in order to display the next image -
cvResetImageROI(DispImage); -
} -
-
// Create a new window, and show the Single Big Image -
//cvNamedWindow( title, 1 ); -
cvShowImage( title, DispImage); -
-
-
//cvDestroyWindow(title); -
-
// End the number of arguments -
va_end(args); -
-
// Release the Image Memory -
cvReleaseImage(&DispImage); - }
- int
main( intargc, char**argv) - {
-
-
int i=0; -
-
IplImage *frame=cvLoadImage(".\test.png"); -
cvNamedWindow("video",1); -
cvResizeWindow("video",700,660); -
-
-
IplImage *frame_not=cvCreateImage(cvGetSize(frame),frame->depth,frame->nChannels); -
cvNot(frame,frame_not); -
-
IplImage *frame_gray=cvCreateImage(cvGetSize(frame),frame->depth,1); -
IplImage *frame1=cvCreateImage(cvGetSize(frame),frame->depth,frame->nChannels); -
IplImage *frame_canny=cvCreateImage(cvGetSize(frame),frame->depth,1); -
IplImage *frame2=cvCreateImage(cvGetSize(frame),frame->depth,frame->nChannels); -
cvCvtColor(frame,frame_gray,CV_RGB2GRAY); -
cvCvtColor(frame_gray,frame1,CV_GRAY2BGR); -
cvCanny(frame_gray,frame_canny,20,75,3); -
cvCvtColor(frame_canny,frame2,CV_GRAY2BGR); -
-
-
cvShowManyImages("video",4,frame,frame_not,frame1,frame2); -
cvWaitKey(); -
-
cvReleaseImage(&frame_not); -
cvReleaseImage(&frame1); -
cvReleaseImage(&frame_gray); -
cvReleaseImage(&frame2); -
cvReleaseImage(&frame_canny); -
-
cvDestroyWindow("video"); -
-
return 0; - }
0 0
- OpenCV一个窗口显示多张图片
- OpenCV一个窗口显示多张图片
- OpenCV一个窗口显示多张图片
- 如何利用opencv在一个窗口显示多张图片
- opencv在一个窗口里面显示多张图片
- opencv一个窗口显示多张图像
- OpenCV同一窗口显示多张图片实现
- OpenCV 一个窗口显示多个图片
- 在一个窗口中显示多张图片
- MATLAB 如何循环显示多张图片在一个窗口
- OpenCV学习(1)--在一个窗口同时显示多张图像
- 在一个窗口中显示两张图片
- 基于OpenCV3实现一个窗口显示若干张图片
- opencv3自定义窗口内显示多张图片
- opencv一个窗口显示多幅图像
- 显示多张图片
- 一个窗口显示多幅图片
- opencv2 一个窗口显示多幅图片
- swift:ViewController中自定义tableView简单入门
- javascript 表达式和语句
- Scanner和BufferedReader的区别
- DES加密系统
- hdoj-1796 容斥水题
- OpenCV一个窗口显示多张图片
- 压缩感知的常见稀疏基名称及离散傅里叶变换基
- 单片机的拉电流和灌电流
- appendChild()和insertBefore()方法插入元素的区别
- HDU 2964 Prime Bases [Ad Hoc]
- 大小为N的数组A,其主要元素是一个出现次数超过N/2的元素。找出主要元素。
- wc2013 糖果公园
- 用鼠标在图片上画矩形框
- 曼德勃罗(Mandelbrot)集合与其编程实现