Skip to content

Instantly share code, notes, and snippets.

@nishidy
Last active February 1, 2016 15:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nishidy/0bb56e6057a0c8a9dc84 to your computer and use it in GitHub Desktop.
Save nishidy/0bb56e6057a0c8a9dc84 to your computer and use it in GitHub Desktop.
#include <opencv2/core/core.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
void show(Mat *img){
cout << "Width " << img->cols << " / Height " << img->rows << endl;
imshow("Image", *img);
waitKey(1500);
}
void ex1_create_mat(){
Mat img(Size(320,240), CV_8UC3, Scalar(0,0,255));
show(&img);
}
Mat baseimg;
void ex2_read_write_image(){
baseimg = imread("toe.jpg", 1);
if(baseimg.data==NULL) exit(-1);
imwrite("img_copy.jpg", baseimg);
show(&baseimg);
}
void ex3_cripping(){
Mat img(baseimg,Rect(150,150,baseimg.cols-300,baseimg.rows-300));
imwrite("img_crip.jpg",img);
show(&img);
}
void ex4_affine_rotate(){
Mat img = baseimg.clone();
Mat affine_mat = getRotationMatrix2D(Point2f(baseimg.cols/2.0,baseimg.rows/2.0),90,1.0);
warpAffine(baseimg,img,affine_mat,baseimg.size(),CV_INTER_LINEAR);
imwrite("img_rotate.jpg",img);
show(&img);
}
void ex5_affine_transform(){
Point2f src[3];
Point2f dst[3];
src[0] = Point2f(0,0);
src[1] = Point2f(baseimg.cols,0);
src[2] = Point2f(0,baseimg.rows);
dst[0] = Point2f(100,100);
dst[1] = Point2f(baseimg.cols,0);
dst[2] = Point2f(0,baseimg.rows);
Mat img = baseimg.clone();
Mat affine_mat = getAffineTransform(src,dst);
warpAffine(baseimg,img,affine_mat,baseimg.size());
imwrite("img_trans.jpg",img);
show(&img);
}
void ex6_reverse(){
Mat img = ~baseimg;
imwrite("img_reverse.jpg",img);
show(&img);
}
void ex7_classifier_face(){
Mat img = baseimg.clone();
CascadeClassifier cascade;
cascade.load("haarcascade_frontalface_alt.xml");
vector<Rect> faces;
cascade.detectMultiScale(img, faces, 1.1, 3, 0, Size(20,20));
for(int i=0; i< faces.size(); i++){
Point pt1(faces[i].x, faces[i].y);
Point pt2(faces[i].x+faces[i].width, faces[i].y+faces[i].height);
rectangle(img,pt1,pt2,Scalar(0,0,255));
}
imwrite("img_face.jpg",img);
show(&img);
}
void ex8_classifier_lowerbody(){
Mat img = baseimg.clone();
CascadeClassifier cascade;
cascade.load("haarcascade_lowerbody.xml");
vector<Rect> faces;
cascade.detectMultiScale(img, faces, 1.1, 3, 0, Size(80,80));
for(int i=0; i< faces.size(); i++){
Point pt1(faces[i].x, faces[i].y);
Point pt2(faces[i].x+faces[i].width, faces[i].y+faces[i].height);
rectangle(img,pt1,pt2,Scalar(0,0,255));
}
imwrite("img_body.jpg",img);
show(&img);
}
int main(int argc, const char* argv[])
{
ex1_create_mat();
ex2_read_write_image();
ex3_cripping();
ex4_affine_rotate();
ex5_affine_transform();
ex6_reverse();
ex7_classifier_face();
ex8_classifier_lowerbody();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment