Stap 10: OpenCV module
//OpenCV code to click images in multiple formats // like Sobel, Blur, Sepia etc #include iostream#include opencv2/opencv.hpp#include opencv2/highgui/highgui.hpp#include opencv2/core/core.hpp#include opencv2/imgproc/imgproc.hpp using namespace std; using namespace cv; int main () { // local variable declaration: char parameter; cout << "Enter the parameter: "; cin >> parameter; // image variables int width = 640; int height = 480; Mat capImg; Mat grayImg; //Gray Image // Sobel Image Mat sobleGrayImg; Mat sobelImg; Mat grad_x, grad_y; Mat abs_grad_x, abs_grad_y; int sscale = 2; int sobelDelta = 0; int ddepth = CV_16S; // Blur Image Mat blurImg, blurGrayImg; // SEPIA IMAGE Mat sepiaImg; Mat_ sepia(3,3); // Canny Image Mat cannyImg; int threshold1 = 1; int threshold2 = 150; // Laplace Image Mat laplaceImg; Mat src_gray, dstImg; int kernel_size = 3; int lscale = 1; int laplaceDelta = 0; int c; // Canny Blur Image Mat cblurImg, cb_grayImg; // Pattern Image Mat dst, cir; Mat cir_32f, dst_32f; int bsize = 8; VideoCapture cap(-1); if(!cap.isOpened()) { cout<<"Cam Not opend..." << endl; exit(-1); } cap.set(CV_CAP_PROP_FRAME_WIDTH, width); cap.set(CV_CAP_PROP_FRAME_HEIGHT, height); cap >> capImg; imwrite("/home/root/akshay/final/frame.jpg", capImg); cap.release(); imshow("Color", capImg); switch(parameter) { // COLOR IMAGE case 'A' : imwrite("/home/root/akshay/final/color.jpg", capImg); imshow("Color Image", capImg); break; // GRAY IMAGE case 'B' : cvtColor(capImg, grayImg, CV_BGR2GRAY); imwrite("/home/root/akshay/final/gray.jpg", grayImg); imshow("Gray Image", grayImg); break; // SOBEL IMAGE case 'C' : GaussianBlur( capImg, capImg, Size(3,3), 0, 0, BORDER_DEFAULT ); cvtColor( capImg, sobleGrayImg, CV_RGB2GRAY ); // Gradient X Sobel( sobleGrayImg, grad_x, ddepth, 1, 0, 3, sscale, sobelDelta, BORDER_DEFAULT ); // Gradient Y Sobel( sobleGrayImg, grad_y, ddepth, 0, 1, 3, sscale, sobelDelta, BORDER_DEFAULT ); convertScaleAbs( grad_x, abs_grad_x ); convertScaleAbs( grad_y, abs_grad_y ); addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, sobelImg ); imwrite("/home/root/akshay/final/sobel.jpg", sobelImg); imshow("Sobel Image",sobelImg); break; // SEPIA IMAGE case 'D' : sepia << 0.131, 0.534, 0.272, 0.168, 0.686, 0.349, 0.189, 0.769, 0.393; cv::transform(capImg, sepiaImg, sepia); imwrite("/home/root/akshay/final/sepia.jpg", sepiaImg); imshow("Sepia Image", sepiaImg); break; // CANNY IMAGE case 'E' : cvtColor(capImg, cannyImg, CV_BGR2GRAY); Canny(cannyImg, cannyImg, threshold1, threshold2); imwrite("/home/root/akshay/final/cannyImg.jpg", cannyImg); imshow("Canny Image",cannyImg); break; // LAPLACE IMAGE case 'F' : GaussianBlur( capImg, capImg, Size(3,3), 0, 0, BORDER_DEFAULT ); Laplacian( capImg, dstImg, ddepth, kernel_size, lscale, laplaceDelta, BORDER_DEFAULT ); convertScaleAbs( dstImg, laplaceImg ); imwrite("/home/root/akshay/final/laplace.jpg", laplaceImg); imshow( "Laplace Image", laplaceImg ); break; // CANNY BLUR IMAGE case 'G' : cvtColor(capImg, cb_grayImg, CV_BGR2GRAY); Canny(cb_grayImg, cb_grayImg, threshold1, threshold2); blur( cb_grayImg, cblurImg, Size(4,4) ); imwrite("/home/root/akshay/final/cblur.jpg", cblurImg); imshow("Canny Blur Image",cblurImg); break; // Pattern Image case 'H' : dst = cv::Mat::zeros(capImg.size(), CV_8UC3); cir = cv::Mat::zeros(capImg.size(), CV_8UC1); for (int i = 0; i < capImg.rows; i += bsize) { for (int j = 0; j < capImg.cols; j += bsize) { Rect rect = cv::Rect(j, i, bsize, bsize) & cv::Rect(0, 0, capImg.cols, capImg.rows); Mat sub_dst(dst, rect); sub_dst.setTo(cv::mean(capImg(rect))); circle(cir, cv::Point(j+bsize, i+bsize), bsize/2-1, CV_RGB(255,255,255), -1, CV_AA); } } cir.convertTo(cir_32f, CV_32F); normalize(cir_32f, cir_32f, 0, 1, cv::NORM_MINMAX); dst.convertTo(dst_32f, CV_32F); vector channels; split(dst_32f, channels); for (int i = 0; i < channels.size(); ++i) channels[i] = channels[i].mul(cir_32f); merge(channels, dst_32f); dst_32f.convertTo(dst, CV_8U); imwrite("/home/root/akshay/final/pattern.jpg", dst); imshow("Pattern Image", dst); break; } return 0; }