GREENBIT - få det att växa (INTEL IOT) (10 / 13 steg)
Steg 10: OpenCV modul
OpenCV kod att klicka på bilder i flera olika format
som 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
genom att använda namespace std;
med hjälp av namnområdet cv;
int main)
{
lokal variabeldeklaration:
char parameter;
Cout << "ange parametern:";
Cin >> parameter;
bild variabler
int bredd = 640;
int höjd = 480;
Matta capImg;
Matta grayImg; Grå bild
Sobel bild
Matta sobleGrayImg;
Matta sobelImg;
Matta grad_x, grad_y;
Matta abs_grad_x, abs_grad_y;
int sscale = 2;
int sobelDelta = 0;
int ddepth = CV_16S;
Sudda bild
Matta blurImg, blurGrayImg;
SEPIA BILD
Matta sepiaImg;
Mat_ sepia(3,3);
Canny bild
Matta cannyImg;
int threshold1 = 1;
int threshold2 = 150;
Laplace bild
Matta laplaceImg;
Matta src_gray, dstImg;
int kernel_size = 3;
int lscale = 1;
int laplaceDelta = 0;
int c;
Canny suddig bild
Matta cblurImg, cb_grayImg;
Bilden
Matta dst, cir;
Matta cir_32f, dst_32f;
int bsize = 8;
VideoCapture cap(-1);
IF(!Cap.isOpened())
{
Cout << "Cam inte opend..." << oä;
Exit(-1);
}
Cap.set (CV_CAP_PROP_FRAME_WIDTH, bredd);
Cap.set (CV_CAP_PROP_FRAME_HEIGHT, höjd);
Cap >> capImg;
imwrite ("/home/root/akshay/final/frame.jpg", capImg);
Cap.release();
imshow ("färg", capImg);
Switch(parameter)
{
FÄRGBILD
fallet "A":
imwrite ("/home/root/akshay/final/color.jpg", capImg);
imshow ("färgbild", capImg);
bryta;
GRÅ BILD
fallet "B":
cvtColor (capImg, grayImg, CV_BGR2GRAY);
imwrite ("/home/root/akshay/final/gray.jpg", grayImg);
imshow ("grå bild", grayImg);
bryta;
SOBEL BILD
fallet "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);
Lutning 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 bild", sobelImg);
bryta;
SEPIA BILD
fall skulle ":
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 bild", sepiaImg);
bryta;
CANNY BILD
fallet "E":
cvtColor (capImg, cannyImg, CV_BGR2GRAY);
Slug (cannyImg, cannyImg, threshold1, threshold2);
imwrite ("/home/root/akshay/final/cannyImg.jpg", cannyImg);
imshow ("slug bild", cannyImg);
bryta;
LAPLACE BILD
fallet "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 bild", laplaceImg);
bryta;
CANNY SUDDIG BILD
fallet "G":
cvtColor (capImg, cb_grayImg, CV_BGR2GRAY);
Slug (cb_grayImg, cb_grayImg, threshold1, threshold2);
oskärpa (cb_grayImg, cblurImg, Size(4,4));
imwrite ("/home/root/akshay/final/cblur.jpg", cblurImg);
imshow ("slug oskärpa bild", cblurImg);
bryta;
Bilden
fallet "H":
DST = cv::Mat::zeros(capImg.size(), CV_8UC3);
CIR = cv::Mat::zeros(capImg.size(), CV_8UC1);
för (int jag = 0; jag < capImg.rows; i += bsize)
{
för (int j = 0; j < capImg.cols; j += bsize)
{
Rekt rect = cv::Rect (Jönsson, i, bsize, bsize) &
CV::rect (0, 0, capImg.cols, capImg.rows);
Matt sub_dst (dst, rect);
sub_dst.setTo(CV::Mean(capImg(rect)));
cirkel (cir, cv::Point (j + bsize, + bsize), bsize/2-1, CV_RGB(255,255,255), -1, CV_AA);
}
}
cir.convertTo (cir_32f, CV_32F);
normalisera (cir_32f, cir_32f, 0, 1, cv::NORM_MINMAX);
dst.convertTo (dst_32f, CV_32F);
Vector kanaler;
Split (dst_32f, kanaler);
för (int jag = 0; jag < channels.size(); ++ jag)
kanaler [i] = channels[i].mul(cir_32f);
Sammanfoga (kanaler, dst_32f);
dst_32f.convertTo (dst, CV_8U);
imwrite ("/home/root/akshay/final/pattern.jpg", dst);
imshow ("Bilden", dst);
bryta;
}
Return 0;
}