Programowanie w systemie UNIX/OpenCV: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Linia 152:
// for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)
// data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
 
// show the image
cvShowImage("mainWin", img );
 
// wait for a key
cvWaitKey(0);
 
// release the image
cvReleaseImage(&img );
printf("OpenCV version = %s\r\n", CV_VERSION);
return 0;
}
</source>
=== mysz===
<source lang=c>
/*
http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/
 
gcc h.c `pkg-config --cflags --libs opencv`
 
 
 
*/
////////////////////////////////////////////////////////////////////////
//
// h.c
//
// This is a simple, introductory OpenCV program. The program reads an
// image from a file, inverts it, and displays the result.
//
////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h> // highgui_c.h
 
 
// https://opencv-srf.blogspot.com/2011/11/mouse-events.html
// http://opencvexamples.blogspot.com/2014/01/detect-mouse-clicks-and-moves-on-image.html
 
void CallBackFunc(int event, int x, int y, int flags, void* userdata)
{
if ( event == CV_EVENT_LBUTTONDOWN )
{
//cout << "Left button of the mouse is clicked - position (" << x << ", " << y << ")" << endl;
}
else if ( event == CV_EVENT_RBUTTONDOWN )
{
//cout << "Right button of the mouse is clicked - position (" << x << ", " << y << ")" << endl;
}
else if ( event == CV_EVENT_MBUTTONDOWN )
{
//cout << "Middle button of the mouse is clicked - position (" << x << ", " << y << ")" << endl;
}
else if ( event == CV_EVENT_MOUSEMOVE )
{
// cout << "Mouse move over the window - position (" << x << ", " << y << ")" << endl;
printf(" x= %d ; y = %d \n ", x, y);
 
}
}
 
 
 
 
int main(int argc, char *argv[])
{
IplImage* img = 0;
int height,width,step,channels;
uchar *data;
int i,j,k;
 
if(argc<2){
printf("Usage: main <image-file-name>\n\7");
exit(0);
}
 
// load an image
img=cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR );
if(!img){
printf("Could not load image file: %s\n",argv[1]);
exit(0);
}
 
// get the image data
height = img->height;
width = img->width;
step = img->widthStep;
channels = img->nChannels;
data = (uchar *)img->imageData;
printf("Processing a %dx%d image with %d channels\n",height,width,channels);
 
// create a window
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin", 100, 100);
 
// invert the image
// for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)
// data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
 
//set the callback function for any mouse event
// https://stackoverflow.com/questions/15570431/opencv-return-value-from-mouse-callback-function
cvSetMouseCallback("mainWin", CallBackFunc, NULL);
// changed value of p will be accessible here
 
 
// show the image