এই টপিকটিতে আমরা ট্র্যাকবারের আরেকটি অ্যাপ্লিকেশন দেখব। এখানে আমরা ট্র্যাকবার ব্যবহার করে ইমেজের আকার পরিবর্তন করব, ইমেজে বর্ডার যোগ করব এবং বর্ডারের আকার ট্র্যাকবারের মাধ্যমে পরিবর্তন করব। রোটেশনও করা যাবে। এটি পূর্বের উদাহরণের মতো।
একই ট্র্যাকবারে একাধিক স্লাইডার যোগ করার প্রোগ্রাম
#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int Rotate = 180; // প্রাথমিক কোণ
int Scale = 50; // প্রাথমিক স্কেল
int Border = 0; // প্রাথমিক বর্ডার
Mat before_Rotate; // রোটেশনের আগের ম্যাট্রিক্স
int vertical = 0; // প্রাথমিক লম্বাঘাত মান
int horizontal = 0; // প্রাথমিক আড়াঘাত মান
void rotator(int, void*) { // ইমেজ রোটেট করার ফাংশন
Mat Rotation = getRotationMatrix2D(Point(horizontal, vertical), (Rotate - 180), Scale / 50.0); // ২D রোটেশনের জন্য অ্যাফাইন ট্রান্সফরমেশন ম্যাট্রিক্স
Mat Rotated; // রোটেটেড ইমেজের ম্যাট্রিক্স
warpAffine(before_Rotate, Rotated, Rotation, before_Rotate.size(), INTER_LINEAR, Border, Scalar()); // অ্যাফাইন ট্রান্সফরমেশন প্রয়োগ
imshow("RotatedImage", Rotated); // রোটেটেড ইমেজ দেখানো
}
int main(int argc, char** argv) {
before_Rotate = imread("sky.jpg"); // ইমেজ ম্যাট্রিক্সে লোড
vertical = before_Rotate.rows / 2; // সারির মিডপয়েন্ট
horizontal = before_Rotate.cols / 2; // কলামের মিডপয়েন্ট
namedWindow("BeforeRotate"); // রোটেশনের আগের ইমেজ দেখানোর উইন্ডো
imshow("BeforeRotate", before_Rotate); // রোটেশনের আগের ইমেজ দেখানো
namedWindow("AfterRotate"); // রোটেশনের পরের ইমেজ দেখানোর উইন্ডো
createTrackbar("Angle", "AfterRotate", &Rotate, 360, rotator); // রোটেশনের জন্য ট্র্যাকবার
createTrackbar("Scale", "AfterRotate", &Scale, 100, rotator); // আকার পরিবর্তনের জন্য ট্র্যাকবার
createTrackbar("Border Mode", "AfterRotate", &Border, 5, rotator); // বর্ডার যোগ করার জন্য ট্র্যাকবার
int cbfunction = 0; // রোটেটর ফাংশনের আর্গুমেন্টের প্রাথমিক মান
rotator(cbfunction, &cbfunction); // কলব্যাক রোটেটর ফাংশন
waitKey(0); // কীস্ট্রোক অপেক্ষা
return 0;
}
আউটপুট
