Computer >> Máy Tính >  >> Lập trình >> C ++

Làm cách nào để thay đổi kích thước của hình ảnh và thêm đường viền trong OpenCV bằng C ++?

Trong chủ đề này, chúng ta sẽ thấy một ứng dụng khác của trackbar. Ở đây, chúng tôi sẽ sử dụng track-bar để thay đổi kích thước của hình ảnh và thêm đường viền vào hình ảnh và thay đổi kích thước của đường viền bằng cách sử dụng track-bar.

Sử dụng chương trình sau, chúng ta có thể thay đổi kích thước của hình ảnh, thêm đường viền, thay đổi kích thước đường viền và xoay hình ảnh. Nó tương tự như ví dụ trước.

Chương trình sau đây trình bày cách thêm nhiều thanh trượt trong cùng một thanh theo dõi.

Ví dụ

#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;
}

Đầu ra

Làm cách nào để thay đổi kích thước của hình ảnh và thêm đường viền trong OpenCV bằng C ++?