이 항목에서는 트랙바의 또 다른 응용 프로그램을 살펴보겠습니다. 여기에서는 트랙 바를 사용하여 이미지의 크기를 변경하고 이미지에 테두리를 추가하고 트랙 바를 사용하여 테두리의 크기를 변경합니다.
다음 프로그램을 사용하여 이미지의 크기를 변경하고, 테두리를 추가하고, 테두리의 크기를 변경하고, 이미지를 회전할 수 있습니다. 앞의 예와 비슷합니다.
다음 프로그램은 동일한 트랙바에 여러 슬라이더를 추가하는 방법을 보여줍니다.
예시
#include<iostream> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace std; using namespace cv; int Rotate = 180;//initializing angle// int Scale = 50;//initializing scale// int Border = 0;//initial Border// Mat before_Rotate;//declaring matrix for before rotation// int vertical = 0;//initial vertical value// int horizontal = 0;//initial horizontal value// void rotator(int, void*){ //function to rotate image// Mat Rotation = getRotationMatrix2D(Point(horizontal, vertical),(Rotate - 180), Scale / 50.0);//affine transformation matrix for 2D rotation// Mat Rotated;//matrix for rotated image warpAffine(before_Rotate, Rotated, Rotation, before_Rotate.size(), INTER_LINEAR, Border, Scalar());//applying affine transformation// imshow("RotatedImage", Rotated);//show rotated image// } int main(int argc,char**argv) { before_Rotate = imread("sky.jpg");//loading image in the matrix// vertical = before_Rotate.rows / 2;//getting midpoint of vertical pixels// horizontal = before_Rotate.cols / 2;//getting midpoints of horizontal pixels// namedWindow("BeforeRotate");//declaring window to show image before rotation// imshow("BeforeRotate", before_Rotate);//showing image before rotation// namedWindow("AfterRotate");//declaring window to show image after rotation// createTrackbar("Angle", "AfterRotate", &Rotate, 360, rotator);//creating trackbar for rotation// createTrackbar("Scale", "AfterRotate", &Scale, 100, rotator);//creating trackbar to change size// createTrackbar("Border Mode", "After Rotate", &Border, 5, rotator);//creating trackbar to add border// int cbfunction = 0;//initiate value of rotator function's argument// rotator(cbfunction, &cbfunction);//call back rotator function// waitKey(0);//wait till keystroke// return 0; }
출력