说明:
用opencv在图片上面添加事件水印,保存图片,并且显示修改后的图片,代码如下:
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui.hpp>
using namespace std;
using namespace cv;
int showBitmap() {
string img_path = "../data/screenshot.png";
string nimg_path = "../data/screenshot_1.png";
Mat src;
//加载图片
//src = imread(img_path, IMREAD_REDUCED_GRAYSCALE_2);
src = imread(img_path, IMREAD_REDUCED_COLOR_2);
//检测是否加载成功
if (!src.data) //or == if(src.empty())
{
cout << "Could not open or find the image" << endl;
return -1;
}
time_t t = time(0);
char tmp[64];
strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A",localtime(&t) );
cout << tmp << endl; //输出nowtime
//circle(src,Point(300,300),100,0,3);//参数一目标图像,参数二中心点坐标,参数三半径,参数四颜色,参数五厚度
putText(src, tmp, Point(src.cols * 9 / 12, src.rows * 7 / 8),FONT_HERSHEY_SIMPLEX,0.5,0,2);//参数一目标图像,参数二文本,参数三文本位置,参数四字体类型, 参数五字体大小,参数六字体颜色,参数七文本厚度
imwrite(nimg_path, src); //保存修改后的图片
/* cv::Point p0 = cv::Point(src.cols / 8,src.rows / 8);
cv::Point p1 = cv::Point(src.cols * 7 / 8,src.rows * 7 / 8);
//设定点的起始和终止坐标
rectangle(src,p0,p1,cv::Scalar(0,255,0),5,8);
//画四边形的函数
//第一个参数为画图的目标图像
//第二个参数为画图的起始坐标
//第三个参数为画图的终止坐标
//第四个参数为画图的颜色
cv::Point p2 = cv::Point(src.cols * 2 / 8, src.rows * 2 / 8);
cv::Point p3 = cv::Point(src.cols * 6 / 8, src.rows * 6 / 8);
rectangle(src, p2, p3, cv::Scalar(0, 255, 255), 2, 4);*/
// 创建窗口
namedWindow("Display", WINDOW_AUTOSIZE);
//显示图像
imshow("Display", src);
//暂停,等待按键结束
waitKey(0);
return 0;
}
int main() {
showBitmap();
return 0;
}
CMakeList.txt文件配置如下:
cmake_minimum_required(VERSION 3.17)
project(MyOpencv)
set(CMAKE_CXX_STANDARD 17)
set(OpenCV_DIR D:\\software\\opencv\\opencv\\mingw-build)
find_package(OpenCV REQUIRED)
include_directories(include)
include_directories(${OpenCV_INCLUDE_DIRS})
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
add_executable(MyOpencv main.cpp)
target_link_libraries(MyOpencv ${OpenCV_LIBS})
文件目录结构: