using putText() diagonally? Using OpenCV

后端 未结 1 1691
谎友^
谎友^ 2021-01-02 15:07

Is it possible using the putText() method to draw text on a picture diagonally?

If not, beside using addWeighted() to blend two pictures together (where one of them

相关标签:
1条回答
  • 2021-01-02 16:11

    Have a look at this example using the idea of my comment:

    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/opencv.hpp>
    #include <iostream>
    
    using namespace std;
    using namespace cv;
    
    /**
     * Rotate an image (source: http://opencv-code.com/quick-tips/how-to-rotate-image-in-opencv/)
     */
    void rotate(cv::Mat& src, double angle, cv::Mat& dst)
    {
        int len = std::max(src.cols, src.rows);
        cv::Point2f pt(len/2., len/2.);
        cv::Mat r = cv::getRotationMatrix2D(pt, angle, 1.0);
    
        cv::warpAffine(src, dst, r, cv::Size(len, len));
    }
    
    
    int main() {
    
        Mat img = imread("lenna.png", CV_LOAD_IMAGE_COLOR);
    
        // Create and rotate the text
        Mat textImg = Mat::zeros(img.rows, img.cols, img.type());
        putText(textImg, "stackoverflow", Point(0, img.cols/2), FONT_HERSHEY_SIMPLEX, 2.0,Scalar(20,20,20),2);
        rotate(textImg, -45, textImg);
    
        // Sum the images (add the text to the original img)
        img= img+textImg;
    
        namedWindow("WaterMark", CV_WINDOW_AUTOSIZE);
        imshow("WaterMark", img);
    
        waitKey(0);
        return 0;
    }
    

    Result:

    lenna Wattermark

    0 讨论(0)
提交回复
热议问题