একটি ভিডিও ঘোরানো একটি চিত্র ঘোরানোর অনুরূপ। শুধুমাত্র পার্থক্য হল একটি ইমেজ ম্যাট্রিক্সে একটি স্থির ছবি লোড করার পরিবর্তে, আমরা একটি ভিডিও লোড করেছি বা ক্যামেরা থেকে ভিডিও স্ট্রিম নিয়েছি৷
এখানে, আমরা ভিডিও লোড করছি না কিন্তু ক্যামেরা ব্যবহার করে একটি ভিডিও নিচ্ছি। আপনি যদি একটি ভিডিও ফাইল ব্যবহার করতে চান তবে ভিডিও ফাইলের ঠিকানাটি সঠিকভাবে রাখুন৷
৷নিচের প্রোগ্রামটি দেখায় কিভাবে C++ ব্যবহার করে ওপেনসিভিতে একটি ভিডিও ঘোরানো যায়।
উদাহরণ
#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[]) {
VideoCapture loadvideo(0);//capture video from default camera//
namedWindow("OriginalVideo");//declaring window to show original video stream//
namedWindow("RotatedVideo");//declaring window to show rotated video stream//
int rotating_angle = 180;//initial rotation angle//
createTrackbar("Rotation", "RotatedVideo", &rotating_angle, 360);//creating trackbar for rotation//
while (true) {
Mat before_Rotating;//declaring matrix for image before rotation//
bool temp = loadvideo.read(before_Rotating);//load frames from video source to matrix//
imshow("OriginalVideo", before_Rotating);//show image frames before rotation//
Mat for_Rotation = getRotationMatrix2D(Point(before_Rotating.cols / 2, before_Rotating.rows / 2), (rotating_angle - 180), 1);//affine transformation matrix for the 2D rotation//
Mat after_Rotating;//declaring matrix for image after rotation//
warpAffine(before_Rotating, after_Rotating, for_Rotation, before_Rotating.size());//applying affine transformation//
imshow("RotatedVideo", after_Rotating);//show image after rotating//
if (waitKey(30) == 27){ //wait till Esc key is pressed from keyboard//
break;
}
}
return 0;
} আউটপুট
