2018-03-12 20:13:16 -0600
| received badge | ● Popular Question
(source)
|
2017-07-17 23:39:14 -0600
| received badge | ● Famous Question
(source)
|
2017-02-08 09:15:29 -0600
| received badge | ● Famous Question
(source)
|
2016-10-25 08:12:08 -0600
| received badge | ● Famous Question
(source)
|
2016-02-19 01:13:07 -0600
| received badge | ● Notable Question
(source)
|
2016-02-11 03:07:50 -0600
| received badge | ● Notable Question
(source)
|
2016-01-27 03:48:51 -0600
| received badge | ● Famous Question
(source)
|
2015-12-06 04:43:41 -0600
| received badge | ● Notable Question
(source)
|
2015-10-13 15:09:12 -0600
| received badge | ● Popular Question
(source)
|
2015-07-19 17:27:38 -0600
| received badge | ● Notable Question
(source)
|
2015-07-05 22:35:57 -0600
| received badge | ● Popular Question
(source)
|
2015-06-10 14:27:22 -0600
| received badge | ● Popular Question
(source)
|
2015-03-18 18:51:41 -0600
| received badge | ● Student
(source)
|
2015-03-12 07:33:05 -0600
| received badge | ● Popular Question
(source)
|
2014-12-09 14:04:58 -0600
| marked best answer | Calculates the angle of orientation of the image with the gradient method Hello,
I have an image I applied the gradient method for the orientation angle of the latter. following the execution of this code I images for gradient directions Dx and DY. So I need to find the orientation angle. Personally I do not know where is the problem because I have no error! Please help me #include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"
using namespace std;
using namespace cv;
//#include "Functions.h"
int main()
{
Mat image;
//image = imread("lena.jpg",1);
image = imread("uEyeImg0.tif",1);
if(image.empty())
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
/// Convert it to gray
//cvtColor( image, image, CV_RGB2GRAY );
//resize(image,image,Size(0,0),0.5,0.5,INTER_LINEAR);
namedWindow("Image", CV_WINDOW_AUTOSIZE );
imshow("Image", image);
/// Generate grad_x and grad_y
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y;
int scale = 1;
int delta = 0;
int ddepth = CV_16S;
Mat grad;
/// Gradient X
//Scharr( image, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT );
Sobel( image, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );
convertScaleAbs( grad_x, abs_grad_x );
/// Gradient Y
// Scharr( image, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT );
Sobel( image, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT );
convertScaleAbs( grad_y, abs_grad_y );
/// Total Gradient (approximate)
addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad );
Mat orientation = Mat(abs_grad_x.rows, abs_grad_y.cols, CV_32F); //to store the gradients
Mat img=Mat(abs_grad_x.rows, abs_grad_y.cols, CV_32F);//to draw out the map
img = cv::Scalar(255,255,255);//all white
// Calculate orientations of gradients --> in degrees
// Loop over all matrix values and calculate the accompanied orientation
for(int i = 0; i < abs_grad_x.rows; i++){
for(int j = 0; j < abs_grad_x.cols; j++){
// Retrieve a single value
float valueX = abs_grad_x.at<float>(i,j);
float valueY = abs_grad_x.at<float>(i,j);
// Calculate the corresponding single direction, done by applying the arctangens function
float result = fastAtan2(valueX,valueY);
// Store in orientation matrix element
orientation.at<float>(i,j) = result;
}
}
namedWindow("ImageSobel", CV_WINDOW_AUTOSIZE );
imshow( "ImageSobel", grad );
namedWindow("ImageSobelGx", CV_WINDOW_AUTOSIZE );
imshow( "ImageSobelGx", abs_grad_x );
namedWindow("ImageSobelGy", CV_WINDOW_AUTOSIZE );
imshow( "ImageSobelGy", abs_grad_y );
waitKey(0);
return 0;
}
|
2014-11-03 04:58:24 -0600
| marked best answer | How to cut an image in small images with opencv !!! C:\fakepath\small image.jpgHello
I need to cut an image in small images with opencv for my algo ! please help me .
thank you #include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"
using namespace std;
using namespace cv;
int main()
{
Mat image;
image = imread("crop_uEyeImg1.tif",1);
if(image.empty())
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
/// Convert it to gray
//cvtColor( image, image, CV_RGB2GRAY );
//resize(image,image,Size(0,0),0.5,0.5,INTER_LINEAR);
namedWindow("Image", CV_WINDOW_AUTOSIZE );
imshow("Image", image);
/// Generate grad_x and grad_y
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y;
int scale = 1;
int delta = 0;
int ddepth = CV_16S;
Mat grad;
// get the image data
int height = image.rows;
int width = image.cols;
printf("Processing a %dx%d image\n",height,width);
cv :: Size smallSize ( 110 , 70 );
std :: vector < Mat > smallImages ;
for ( int y = 0 ; y < image . rows ; y += smallSize . height )
{
for ( int x = 0 ; x < image . cols ; x += smallSize . width )
{
cv :: Rect rect = cv :: Rect ( x , y , smallSize . width , smallSize . height );
smallImages . push_back ( cv :: Mat ( image , rect ));
///// Gradient X
////Scharr( image, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT );
Sobel( image, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );
convertScaleAbs( grad_x, abs_grad_x );
///// Gradient Y
//// Scharr( image, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT );
Sobel( image, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT );
convertScaleAbs( grad_y, abs_grad_y );
///// Total Gradient (approximate)
addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad );
namedWindow("ImageSobel", CV_WINDOW_AUTOSIZE );
imshow( "ImageSobel", grad );
namedWindow("ImageSobelGx", CV_WINDOW_AUTOSIZE );
imshow( "ImageSobelGx", abs_grad_x );
namedWindow("ImageSobelGy", CV_WINDOW_AUTOSIZE );
imshow( "ImageSobelGy", abs_grad_y );
// // Calculate orientations of gradients --> in degrees
// //Loop over all matrix values and calculate the accompanied orientation
Mat orientation = Mat::zeros(abs_grad_x.rows, abs_grad_y.cols, CV_32F); //to store the gradients
grad_x.convertTo(grad_x,CV_32F);
grad_y.convertTo(grad_y,CV_32F);
//phase(grad_x, grad_y, orientation);
//cv::normalize(orientation, orientation, 0x00, 0xFF, cv::NORM_MINMAX, CV_8U);
////namedWindow("Orientation", CV_WINDOW_AUTOSIZE );
////imshow( "Orientation", orientation );
phase(grad_x, grad_y, orientation, true);
ofstream file1("orient.txt"); file1 << orientation; file1.close();
}
}
waitKey(0);
return 0;
}
|
2014-07-09 03:27:03 -0600
| asked a question | How can I Set and reset a bit for 10 ms !! Hello , I would like set a bit and off for 10ms to send a command after my image processing !!
think you |
2014-07-01 02:23:54 -0600
| commented answer | Imread many image of type Mat I did it as you told me but I have an error " segmentation fault"
I've updated the code used |
2014-06-30 10:10:39 -0600
| asked a question | Imread many image of type Mat Hello ,
With my program I can read an image.
Now I have many images in my database.
How can I do read the image loop!
(the type of image is Mat)
Please!
thank you int main()
{
vector<Mat> frames;
char filename[100] ;
for (int i=1;i<4;i++){
sprintf(filename,"/home/user/Bureau/Nouveau dossier/sobel-test/uEyeImg000%d.tif",i);
Mat frame=imread(filename);
frames.push_back(frame);
}
waitKey(0);
return 0 ;
}
|
2014-06-30 05:09:52 -0600
| asked a question | Crop image with opencv !! Hello ,
I want to crop image while keeping the same "y" position and Height against by changing the "x" position and width!!
Please help me
Thank you |
2014-06-30 03:17:04 -0600
| commented answer | Convert vector 2D of Mat type to vector 1D ? |
2014-06-26 06:45:45 -0600
| asked a question | Convert vector 2D of Mat type to vector 1D ? Hello
I have a picture of Mat-type so it is a 2D vector.
I want to convert it into a 1D vector.
how can I do it knowing that I have already used this function it does not work??
please help me .. /// Convert mat Grad X to vector
vector< float> Vgrad_x;
Vgrad_x.assignTo(smallImages_gradx,-1);
|
2014-06-25 02:01:01 -0600
| commented answer | Display 4 images and save as in a table (opencv , C++ ) thank you :) but the smallImages is declared like Mat . So I have an error when it is like a table smallImages[i] .. |
2014-06-23 04:53:13 -0600
| commented answer | Display 4 images and save as in a table (opencv , C++ ) If you can do for me a small sample code for an image and divide it into 4 parts and then save the 4 small images.
Because I can not follow you.
I am a beginner and I'm really blocked for several days.
Please update your code with a simple and complete example
thank you |
2014-06-23 01:52:43 -0600
| commented answer | Display 4 images and save as in a table (opencv , C++ ) many small images of the input image |
2014-06-20 08:02:41 -0600
| commented answer | Display 4 images and save as in a table (opencv , C++ ) the new solution does not working . error in line imshow ( image_name [ i ], smallImages [ i ] );
and if I change this line by imshow ( image_name [ i ], cv :: Mat ( image , rect ) );
I got only the last image but i like to have all the value of images saved in a table. |
2014-06-20 06:19:58 -0600
| commented answer | Display 4 images and save as in a table (opencv , C++ ) thank you but its not working |
2014-06-20 03:43:38 -0600
| commented answer | Display 4 images and save as in a table (opencv , C++ ) I have in my code waitkey (0) ;
but I have an error: declaration of ‘image_name’ as multidimensional array must have bounds for all dimensions except the first
for the declaration of image_name !! |
2014-06-20 02:56:42 -0600
| asked a question | Display 4 images and save as in a table (opencv , C++ ) Hello, The code will read an image and cut into 4 parts so 4 small images.
My problem is to display 4 images and save in a table. I can display only the last image but not all with imshow :
imshow ( "smallImages", cv::Mat ( image , rect )); Please help me and think you. for ( int y = 0 ; y < image . rows ; y += smallSize . height )
{
for ( int x = 0 ; x < image . cols ; x += smallSize . width )
{
cv :: Rect rect = cv :: Rect ( x , y , smallSize . width , smallSize . height );
smallImages . push_back ( cv :: Mat ( image , rect ));
imshow ( "smallImages", cv::Mat ( image , rect ));
}
}
|
2014-06-18 06:35:31 -0600
| commented question | Problem of return value !! I have the variable result type matrix that contains values between [0,1] the goal is to return the min and max and their indices minLoc maxLoc
I did this but it does not work as I want:
if( match_method == TM_SQDIFF || match_method == TM_SQDIFF_NORMED )
{ matchLoc = minLoc;
printf ( " minVal=%0.1f\n",minVal);
printf ( " minloc_x=%d\n",minLoc.x);
printf ( " minloc_y=%d\n",minLoc.y);}
else
{ matchLoc = maxLoc;
printf ( " maxVal=%0.2f\n",maxVal);
printf ( " maxloc_x=%d\n",maxLoc.x);
printf ( " maxloc_y=%d\n",maxLoc.y);} |
2014-06-18 03:46:33 -0600
| asked a question | Problem of return value !! Hello,
Please I need your help to extract the value of the minVal, maxVal and minLoc, maxLoc. I have the variable result type matrix that contains values between [0,1] the goal is to return the min and max and their indices minLoc maxLoc
I did this but it does not work as I want: Think you #include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"
using namespace std;
using namespace cv;
/// Global Variables
Mat img; Mat templ; Mat result;
Mat im_out;
Mat im_out1;
const char* image_window = "Source Image";
const char* result_window = "Result window";
int match_method;
int max_Trackbar = 5;
/// Function Headers
void MatchingMethod( int, void* );
/**
* @function main
*/
int main( int, char** argv )
{
/// Load image and template
img = cvLoadImage("ref1.tif", CV_LOAD_IMAGE_GRAYSCALE);
namedWindow("image_source");
namedWindow("resize-image_source");
resize(img,im_out,Size(img.cols/5,img.rows/5),0,0,INTER_LINEAR);
imshow("image_source", img);
imshow("resize-image_source", im_out);
templ = cvLoadImage("tpl5.tif", CV_LOAD_IMAGE_GRAYSCALE);
namedWindow("image_palette");
namedWindow("resize-image_palette");
resize(templ,im_out1,Size(templ.cols/5,templ.rows/5),0,0,INTER_LINEAR);
imshow("image_source", img);
imshow("resize-image_palette", im_out1);
/// Create windows
namedWindow( image_window, WINDOW_AUTOSIZE );
namedWindow( result_window, WINDOW_AUTOSIZE );
/// Create Trackbar
const char* trackbar_label = "Method: \n 0: SQDIFF \n 1: SQDIFF NORMED \n 2: TM CCORR \n 3: TM CCORR NORMED \n 4: TM COEFF \n 5: TM COEFF NORMED";
createTrackbar( trackbar_label, image_window, &match_method, 5, MatchingMethod );
MatchingMethod( 0, 0 );
waitKey(0);
return 0;
}
/**
* @function MatchingMethod
* @brief Trackbar callback
*/
void MatchingMethod( int, void* )
{
//char* window_name = "Image result hist ";
string name;
/// Source image to display
Mat img_display;
im_out.copyTo( img_display );
/// Create the result matrix
int result_cols = im_out.cols - im_out1.cols + 1;
int result_rows = im_out.rows - im_out1.rows + 1;
result.create( result_cols, result_rows, CV_32FC1 );
/// Do the Matching and Normalize
matchTemplate( im_out, im_out1, result, match_method );
normalize( result, result, 0, 1, NORM_MINMAX, -1, Mat() );
/// Localizing the best match with minMaxLoc
double minVal; double maxVal; Point minLoc; Point maxLoc;
Point matchLoc;
minMaxLoc( result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() );
/// For SQDIFF and SQDIFF_NORMED, the best matches are lower values. For all the other methods, the higher the better
if( match_method == TM_SQDIFF || match_method == TM_SQDIFF_NORMED )
{ matchLoc = minLoc;
printf ( " minVal=%0.1f\n",minVal);
printf ( " minloc_x=%d\n",minLoc.x);
printf ( " minloc_y=%d\n",minLoc.y);}
else
{ matchLoc = maxLoc;
printf ( " maxVal=%0.2f\n",maxVal);
printf ( " maxloc_x=%d\n",maxLoc.x);
printf ( " maxloc_y=%d\n",maxLoc.y);}
/// Show me what you got
rectangle( img_display, matchLoc, Point( matchLoc.x + im_out1.cols , matchLoc.y + im_out1.rows ), Scalar::all(0), 2, 8, 0 );
rectangle( result, matchLoc, Point( matchLoc.x + im_out1.cols , matchLoc.y + im_out1.rows ), Scalar::all(0), 2, 8, 0 );
cout << "result = " << endl << " " << result<< endl << endl;
printf ( " minVal=%d\n",minVal);
printf ( " maxVal=%d\n",maxVal);
imshow( image_window, img_display );
imshow( result_window, result );
return;
}
|
2014-06-16 10:28:30 -0600
| asked a question | How can I return the result of the coorelation between [0,1] ? Hello ,
I want to return the result of the coorelation between [0,1] for each methode .
please help me
think you /**
* @file MatchTemplate_Demo.cpp
* @brief Sample code to use the function MatchTemplate
* @author OpenCV team
*/
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace std;
using namespace cv;
/// Global Variables
Mat img; Mat templ; Mat result;
const char* image_window = "Source Image";
const char* result_window = "Result window";
int match_method;
int max_Trackbar = 5;
/// Function Headers
void MatchingMethod( int, void* );
/**
* @function main
*/
int main( int, char** argv )
{
/// Load image and template
//img = imread( argv[1], 1 );
//templ = imread( argv[2], 1 );
img = cvLoadImage("ref1.jpg", CV_LOAD_IMAGE_GRAYSCALE);
templ = cvLoadImage("tpl1.jpg", CV_LOAD_IMAGE_GRAYSCALE);
//
/// Create windows
namedWindow( image_window, WINDOW_AUTOSIZE );
namedWindow( result_window, WINDOW_AUTOSIZE );
/// Create Trackbar
const char* trackbar_label = "Method: \n 0: SQDIFF \n 1: SQDIFF NORMED \n 2: TM CCORR \n 3: TM CCORR NORMED \n 4: TM COEFF \n 5: TM COEFF NORMED";
createTrackbar( trackbar_label, image_window, &match_method, 5, MatchingMethod );
MatchingMethod( 0, 0 );
waitKey(0);
return 0;
}
/**
* @function MatchingMethod
* @brief Trackbar callback
*/
void MatchingMethod( int, void* )
{
/// Source image to display
Mat img_display;
img.copyTo( img_display );
/// Create the result matrix
int result_cols = img.cols - templ.cols + 1;
int result_rows = img.rows - templ.rows + 1;
result.create( result_cols, result_rows, CV_32FC1 );
/// Do the Matching and Normalize
matchTemplate( img, templ, result, match_method );
normalize( result, result, 0, 1, NORM_MINMAX, -1, Mat() );
/// Localizing the best match with minMaxLoc
double minVal; double maxVal; Point minLoc; Point maxLoc;
Point matchLoc;
minMaxLoc( result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() );
/// For SQDIFF and SQDIFF_NORMED, the best matches are lower values. For all the other methods, the higher the better
if( match_method == TM_SQDIFF || match_method == TM_SQDIFF_NORMED )
{ matchLoc = minLoc; }
else
{ matchLoc = maxLoc; }
/// Show me what you got
rectangle( img_display, matchLoc, Point( matchLoc.x + templ.cols , matchLoc.y + templ.rows ), Scalar::all(0), 2, 8, 0 );
rectangle( result, matchLoc, Point( matchLoc.x + templ.cols , matchLoc.y + templ.rows ), Scalar::all(0), 2, 8, 0 );
imshow( image_window, img_display );
imshow( result_window, result );
return;
}
|
2014-06-16 10:21:18 -0600
| asked a question | How can I have only the method of "TM COEFF NORMED"? enter code here Hello,
I want to use only the method of "TM COEFF NORMED" for the Demo code of "Template Matching".
Please help me ...
Think you /**
* @file MatchTemplate_Demo.cpp
* @brief Sample code to use the function MatchTemplate
* @author OpenCV team
*/
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace std;
using namespace cv;
/// Global Variables
Mat img; Mat templ; Mat result;
const char* image_window = "Source Image";
const char* result_window = "Result window";
int match_method;
int max_Trackbar = 5;
/// Function Headers
void MatchingMethod( int, void* );
/**
* @function main
*/
int main( int, char** argv )
{
/// Load image and template
//img = imread( argv[1], 1 );
//templ = imread( argv[2], 1 );
img = cvLoadImage("ref1.jpg", CV_LOAD_IMAGE_GRAYSCALE);
templ = cvLoadImage("tpl1.jpg", CV_LOAD_IMAGE_GRAYSCALE);
//
/// Create windows
namedWindow( image_window, WINDOW_AUTOSIZE );
namedWindow( result_window, WINDOW_AUTOSIZE );
/// Create Trackbar
const char* trackbar_label = "Method: \n 0: SQDIFF \n 1: SQDIFF NORMED \n 2: TM CCORR \n 3: TM CCORR NORMED \n 4: TM COEFF \n 5: TM COEFF NORMED";
createTrackbar( trackbar_label, image_window, &match_method, 5, MatchingMethod );
MatchingMethod( 0, 0 );
waitKey(0);
return 0;
}
/**
* @function MatchingMethod
* @brief Trackbar callback
*/
void MatchingMethod( int, void* )
{
/// Source image to display
Mat img_display;
img.copyTo( img_display );
/// Create the result matrix
int result_cols = img.cols - templ.cols + 1;
int result_rows = img.rows - templ.rows + 1;
result.create( result_cols, result_rows, CV_32FC1 );
/// Do the Matching and Normalize
matchTemplate( img, templ, result, match_method );
normalize( result, result, 0, 1, NORM_MINMAX, -1, Mat() );
/// Localizing the best match with minMaxLoc
double minVal; double maxVal; Point minLoc; Point maxLoc;
Point matchLoc;
minMaxLoc( result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() );
/// For SQDIFF and SQDIFF_NORMED, the best matches are lower values. For all the other methods, the higher the better
if( match_method == TM_SQDIFF || match_method == TM_SQDIFF_NORMED )
{ matchLoc = minLoc; }
else
{ matchLoc = maxLoc; }
/// Show me what you got
rectangle( img_display, matchLoc, Point( matchLoc.x + templ.cols , matchLoc.y + templ.rows ), Scalar::all(0), 2, 8, 0 );
rectangle( result, matchLoc, Point( matchLoc.x + templ.cols , matchLoc.y + templ.rows ), Scalar::all(0), 2, 8, 0 );
imshow( image_window, img_display );
imshow( result_window, result );
return;
}
|