# Revision history [back]

### 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. The goal is to find the orientation angle. Personally I do not know where the problem is because I have no error! Please help me

# 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 );

// 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);
// 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; }

 2 retagged berak 32993 ●7 ●81 ●312

### 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. The goal is to find the orientation angle. Personally I do not know where the problem is because I have no error! Please help me

# 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 );

// 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);
// 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; }

### 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. The goal is to find the orientation angle. Personally I do not know where the problem is because I have no error! Please help me

# include "opencv2/core/core.hpp"

#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;
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);
int scale = 1;
int delta = 0;
int ddepth = CV_16S;

//Scharr( image, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT );
Sobel( image, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );

// Scharr( image, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT );
Sobel( image, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT );

img = cv::Scalar(255,255,255);//all white white

// Calculate orientations of gradients --> in degrees
// Loop over all matrix values and calculate the accompanied orientation 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 value

// 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 );

namedWindow("ImageSobelGx", CV_WINDOW_AUTOSIZE );

namedWindow("ImageSobelGy", CV_WINDOW_AUTOSIZE );

waitKey(0);
return 0;
}
} namedWindow("ImageSobel", CV_WINDOW_AUTOSIZE );
imshow( "ImageSobel", grad ); namedWindow("ImageSobelGx", CV_WINDOW_AUTOSIZE );
imshow( "ImageSobelGx", abs_grad_x ); namedWindow("ImageSobelGy", CV_WINDOW_AUTOSIZE );
} 


 4 No.4 Revision updated 2014-05-13 04:29:26 -0600 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. The goal is So I need to find the orientation angle. Personally I do not know where is the problem is 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; } 


 Copyright OpenCV foundation, 2012-2018. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license. about | faq | help | privacy policy | terms of service Powered by Askbot version 0.10.2 Please note: OpenCV answers requires javascript to work properly, please enable javascript in your browser, here is how //IE fix to hide the red margin var noscript = document.getElementsByTagName('noscript')[0]; noscript.style.padding = '0px'; noscript.style.backgroundColor = 'transparent'; askbot['urls']['mark_read_message'] = '/s/messages/markread/'; askbot['urls']['get_tags_by_wildcard'] = '/s/get-tags-by-wildcard/'; askbot['urls']['get_tag_list'] = '/s/get-tag-list/'; askbot['urls']['follow_user'] = '/followit/follow/user/{{userId}}/'; askbot['urls']['unfollow_user'] = '/followit/unfollow/user/{{userId}}/'; askbot['urls']['user_signin'] = '/account/signin/'; askbot['urls']['getEditor'] = '/s/get-editor/'; askbot['urls']['apiGetQuestions'] = '/s/api/get_questions/'; askbot['urls']['ask'] = '/questions/ask/'; askbot['urls']['questions'] = '/questions/'; askbot['settings']['groupsEnabled'] = false; askbot['settings']['static_url'] = '/m/'; askbot['settings']['minSearchWordLength'] = 4; askbot['settings']['mathjaxEnabled'] = false; askbot['settings']['sharingSuffixText'] = ''; askbot['settings']['errorPlacement'] = 'after-label'; askbot['data']['maxCommentLength'] = 800; askbot['settings']['editorType'] = 'markdown'; askbot['settings']['commentsEditorType'] = 'rich\u002Dtext'; askbot['messages']['askYourQuestion'] = 'Ask Your Question'; askbot['messages']['questionSingular'] = 'question'; askbot['messages']['answerSingular'] = 'answer'; askbot['messages']['acceptOwnAnswer'] = 'accept or unaccept your own answer'; askbot['messages']['followQuestions'] = 'follow questions'; askbot['settings']['allowedUploadFileTypes'] = [ "jpg", "jpeg", "gif", "bmp", "png", "tiff" ]; askbot['data']['haveFlashNotifications'] = true; askbot['data']['activeTab'] = 'questions'; askbot['settings']['csrfCookieName'] = 'csrftoken'; askbot['data']['searchUrl'] = ''; /*<![CDATA[*/ $('.mceStatusbar').remove();//a hack to remove the tinyMCE status bar$(document).ready(function(){ // focus input on the search bar endcomment var activeTab = askbot['data']['activeTab']; if (inArray(activeTab, ['users', 'questions', 'tags', 'badges'])) { var searchInput = $('#keywords'); } else if (activeTab === 'ask') { var searchInput =$('#id_title'); } else { var searchInput = undefined; animateHashes(); } if (searchInput) { searchInput.focus(); putCursorAtEnd(searchInput); } var haveFullTextSearchTab = inArray(activeTab, ['questions', 'badges', 'ask']); var haveUserProfilePage = $('body').hasClass('user-profile-page'); if ((haveUserProfilePage || haveFullTextSearchTab) && searchInput && searchInput.length) { var search = new FullTextSearch(); askbot['controllers'] = askbot['controllers'] || {}; askbot['controllers']['fullTextSearch'] = search; search.setSearchUrl(askbot['data']['searchUrl']); if (activeTab === 'ask') { search.setAskButtonEnabled(false); } search.decorate(searchInput); } else if (activeTab === 'tags') { var search = new TagSearch(); search.decorate(searchInput); } if (askbot['data']['userIsAdminOrMod']) {$('body').addClass('admin'); } if (askbot['settings']['groupsEnabled']) { askbot['urls']['add_group'] = "/s/add-group/"; var group_dropdown = new GroupDropdown(); $('.groups-dropdown').append(group_dropdown.getElement()); } var userRep =$('#userToolsNav .reputation'); if (userRep.length) { var showPermsTrigger = new ShowPermsTrigger(); showPermsTrigger.decorate(userRep); } }); if (askbot['data']['haveFlashNotifications']) { $('#validate_email_alert').click(function(){notify.close(true)}) notify.show(); } var langNav =$('.lang-nav'); if (langNav.length) { var nav = new LangNav(); nav.decorate(langNav); } /*]]>*/ //todo - take this out into .js file $(document).ready(function(){$('div.revision div[id^=rev-header-]').bind('click', function(){ var revId = this.id.substr(11); toggleRev(revId); }); lanai.highlightSyntax(); }); function toggleRev(id) { var arrow = $("#rev-arrow-" + id); var visible = arrow.attr("src").indexOf("hide") > -1; if (visible) { var image_path = '/m/default/media/images/expander-arrow-show.gif?v=6'; } else { var image_path = '/m/default/media/images/expander-arrow-hide.gif?v=6'; } image_path = image_path + "?v=6"; arrow.attr("src", image_path);$("#rev-body-" + id).slideToggle("fast"); } for (url_name in askbot['urls']){ askbot['urls'][url_name] = cleanUrl(askbot['urls'][url_name]); }