Skip to content

Instantly share code, notes, and snippets.

@andrewssobral
Created June 15, 2018 14:07
Show Gist options
  • Save andrewssobral/f801e6a9e4c84b1cbd7631f5005ce170 to your computer and use it in GitHub Desktop.
Save andrewssobral/f801e6a9e4c84b1cbd7631f5005ce170 to your computer and use it in GitHub Desktop.
cling for opencv example
// cat cling_opencv_example.cpp | cling
.L /usr/lib/libopencv_highgui.so
#include <opencv/highgui.h>
#include <math.h>
#include <iostream>
using namespace std;
template <typename T> T deg2rad(T deg) { return deg*M_PI/180.0; }
template <typename T> T rad2deg(T rad) { return rad*180.0/M_PI; }
template <typename T> T toCircleAngle(T angleOnEllipse, cv::Size_<T> axis) {
return atan(axis.width*tan(angleOnEllipse)/axis.height);
}
template <> int toCircleAngle(int angleOnEllipse, cv::Size axis) {
return rad2deg(toCircleAngle<double>(deg2rad((double)angleOnEllipse), cv::Size2d(axis.width, axis.height)));
}
int m = 50;
IplImage* img = cvCreateImage(cvSize(16*m, 15*m), IPL_DEPTH_8U, 1);
cvZero(img);
CvPoint center = cvPoint(8*m, 7*m);
CvSize size = cvSize(5*m, 8*m);
double angle = 126.0;
double arcStart = toCircleAngle<int>(30, size);
double arcEnd = toCircleAngle<int>(83, size);
clog << arcStart << " " << arcEnd << endl;
cvEllipse(img, center, size, angle, 0, 360, cvRealScalar(128), 1);
cvEllipse(img, center, size, angle, 0, 90, cvRealScalar(255), 2);
cvEllipse(img, center, size, angle, arcStart, arcEnd, cvRealScalar(128), 2);
cvLine(img, center, cvPoint(1*m, 3*m), cvRealScalar(255), 1);
cvLine(img, center, cvPoint(3*m, 9*m), cvRealScalar(255), 1);
cvShowImage("test", img);
cvWaitKey(0);
cvReleaseImage(&img);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment