当前位置: 首页 > news >正文

做图片详情网站素材网站个人做的

做图片详情网站,素材网站个人做的,网站开发的微端是什么,什么平台可以免费推广产品这篇博客为修改过后的转载#xff0c;因为没有转载链接#xff0c;所以选了原创 文章目录 一、vs code 结合Cmake debug1.1 配置tasks.json1.2 配置launch.json 二、图片、视频、摄像头读取显示2.1 读取图片并显示2.2 读取视频文件并显示2.3 读取摄像头并写入文件 三、图片基…这篇博客为修改过后的转载因为没有转载链接所以选了原创 文章目录 一、vs code 结合Cmake debug1.1 配置tasks.json1.2 配置launch.json 二、图片、视频、摄像头读取显示2.1 读取图片并显示2.2 读取视频文件并显示2.3 读取摄像头并写入文件 三、图片基本操作3.1 颜色转换3.2 图像filtering3.3 形状调整3.4 绘制 四、RTSP 视频流4.1 本机构造RTSP视频流optional4.2 使用ffmpeg作为视频解码 五、人脸检测小例子 一、vs code 结合Cmake debug 1.1 配置tasks.json 文件架构如下 需要注意-DCMAKE_BUILD_TYPEDebug 要设置为Debug模式。 {version: 2.0.0,tasks: [{// cmake配置type: cppbuild,label: CMake配置,command: cmake, // cmake命令args: [-S ., // 源码目录-B build, // 编译目录-DCMAKE_BUILD_TYPEDebug // 编译类型],options: {cwd: ${workspaceFolder} // 工作目录},problemMatcher: [$gcc],group: build,},{// cmake编译type: cppbuild,label: CMake编译,command: cmake, // cmake命令args: [--build, // 编译build, // 编译目录],options: {cwd: ${workspaceFolder} // 工作目录},problemMatcher: [$gcc],group: build,dependsOn: [CMake配置 // 依赖CMake配置先执行CMake配置]},{// 删除build目录type: shell,label: 删除build目录,command: rm -rf build,options: {cwd: ${workspaceFolder} // 工作目录},problemMatcher: [$gcc],group: build,}] }1.2 配置launch.json {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息请访问: https://go.microsoft.com/fwlink/?linkid830387version: 0.2.0,configurations: [{name: CMake调试,type: cppdbg,request: launch,program: ${workspaceFolder}/build/cmake_debug, // 编译后的程序需要结合CMakeLists.txt中的add_executable()函数args: [],stopAtEntry: false,cwd: ${workspaceFolder},environment: [],externalConsole: false,MIMode: gdb,miDebuggerPath: /usr/bin/gdb,setupCommands: [{description: Enable pretty-printing for gdb,text: -enable-pretty-printing,ignoreFailures: true}],preLaunchTask: CMake编译}] }二、图片、视频、摄像头读取显示 2.1 读取图片并显示 // 使用imread函数读取图片和Python用法类似 // 读取的数据保存在Mat类型的变量image中Mat是opencv中的图像数据结构类似numpy中的ndarray cv::Mat image cv::imread(图片路径);// 输出数据以numpy和Python list格式输出 std::cout cv::format(image, cv::Formatter::FMT_NUMPY) std::endl; std::cout cv::format(image, cv::Formatter::FMT_PYTHON) std::endl;// 判断图像是否读取成功返回true表示失败 if (image.empty()) {std::cout 无法读取图片 std::endl;return 1; } // imshow显示图像 cv::imshow(opencv demo, image); // 保存图像 cv::imwrite(./output/gray_image.jpg, gray_image);// 等待按键 cv::waitKey(0); 2.2 读取视频文件并显示 // 读取视频创建了一个VideoCapture对象参数为视频路径 cv::VideoCapture capture(视频路径);// 判断视频是否读取成功返回true表示成功 if (!capture.isOpened()) {std::cout 无法读取视频 std::endl;return 1; }// 读取视频帧使用Mat类型的frame存储返回的帧 cv::Mat frame; // 循环读取视频帧 while (true) {// 读取视频帧使用 运算符或者read()函数他的参数是返回的帧capture.read(frame);// capture frame;// 显示视频帧cv::imshow(opencv demo, frame); }2.3 读取摄像头并写入文件 // 读取视频创建了一个VideoCapture对象参数为摄像头编号 cv::VideoCapture capture(0);// 写入MP4文件参数分别是文件名编码格式帧率帧大小 cv::VideoWriter writer(record.mp4, cv::VideoWriter::fourcc(H, 2, 6, 4), 20, cv::Size(640, 480));// 写入视频 writer.write(frame);三、图片基本操作 3.1 颜色转换 // BGR - Gray // 三个参数分别是输入图像、输出图像、转换方式 cv::cvtColor(src, gray, cv::COLOR_BGR2GRAY); // BGR - HSVHue(色调)、Saturation(饱和度)、Value(明度) cv::cvtColor(src, hsv, cv::COLOR_BGR2HSV); // BGR - RGB cv::cvtColor(src, rgb, cv::COLOR_BGR2RGB);3.2 图像filtering // 三个参数分别是输入图像、输出图像、卷积核大小 cv::GaussianBlur(src, blur, cv::Size(7, 7), 0); // 膨胀 // 三个参数分别是输入图像、输出图像、卷积核大小 cv::dilate(src, dilate, cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5))); // 腐蚀 // 三个参数分别是输入图像、输出图像、卷积核大小 cv::erode(src, erode, cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5)));3.3 形状调整 // resize // 三个参数分别是输入图像、输出图像、输出图像大小 cv::resize(src, resize, cv::Size(320, 240));// copy cv::Mat copy; src.copyTo(copy); // ROI裁剪 cv::Rect rect(100, 100, 200, 100); // x, y, width, height cv::Mat roi src(rect); cv::imwrite(./output/3.roi.jpg, roi);// 拼接 cv::Mat dog_img cv::imread(./media/dog.jpg); cv::Mat dog_resize; cv::resize(dog_img, dog_resize, cv::Size(320, 240));// 水平拼接需要保证两张图片的高度rows一致 cv::Mat hconcat_img; cv::hconcat(resize, dog_resize, hconcat_img); cv::imwrite(./output/3.hconcat.jpg, hconcat_img);// 或者使用vector方式 std::vectorcv::Mat imgs{resize, dog_resize, resize, dog_resize}; cv::Mat hconcat_img2; cv::hconcat(imgs, hconcat_img2); cv::imwrite(./output/3.hconcat2.jpg, hconcat_img2);// 数组方式 cv::Mat imgs_arr[] {dog_resize, resize, dog_resize, resize}; cv::Mat hconcat_img3; cv::hconcat(imgs_arr, 4, hconcat_img3); // 4是数组长度 cv::imwrite(./output/3.hconcat3.jpg, hconcat_img3);// 垂直拼接需要保证两张图片的宽度cols一致 cv::Mat vconcat_img; cv::vconcat(resize, dog_resize, vconcat_img); cv::imwrite(./output/3.vconcat.jpg, vconcat_img);// 翻转 cv::Mat flip; // 三个参数分别是输入图像、输出图像、翻转方向 cv::flip(src, flip, 1); // 1表示水平翻转0表示垂直翻转-1表示水平垂直翻转// 旋转 cv::Mat rotate; // 三个参数分别是输入图像、输出图像、旋转角度 cv::rotate(src, rotate, cv::ROTATE_90_CLOCKWISE); // 顺时针旋转90度3.4 绘制 // 创建一个黑色图像参数分别是图像大小、图像类型CV_8UC3表示8位无符号整数3通道 cv::Mat image cv::Mat::zeros(cv::Size(600, 600), CV_8UC3);// 绘制直线参数分别是图像、起点、终点、颜色、线宽、线型 cv::line(image, cv::Point(50, 50), cv::Point(350, 250), cv::Scalar(0, 0, 255), 2, cv::LINE_AA); // 绘制矩形参数分别是图像、左上角、右下角、颜色、线宽、线型 cv::rectangle(image, cv::Point(50, 50), cv::Point(350, 250), cv::Scalar(0, 255, 0), 2, cv::LINE_AA); // 绘制圆形参数分别是图像、圆心、半径、颜色、线宽、线型 cv::circle(image, cv::Point(200, 150), 100, cv::Scalar(255, 0, 0), 2, cv::LINE_AA); // 实心 cv::circle(image, cv::Point(200, 150), 50, cv::Scalar(255, 0, 0), -1, cv::LINE_AA);// 多边形 cv::Point points[2][4]; // 定义两个多边形的顶点数组 // 第一个多边形的顶点 points[0][0] cv::Point(100, 115); points[0][1] cv::Point(255, 135); points[0][2] cv::Point(140, 365); points[0][3] cv::Point(100, 300); // 第二个多边形的顶点 points[1][0] cv::Point(300, 315); points[1][1] cv::Point(555, 335); points[1][2] cv::Point(340, 565); points[1][3] cv::Point(300, 500); // ppt[] 要同时添加两个多边形顶点数组的地址 const cv::Point *pts_v[] {points[0], points[1]}; // npts_v[]要定义每个多边形的定点数 int npts_v[] {4, 4}; // 绘制多边形参数分别是图像、顶点数组、顶点数、是否闭合、颜色、线宽、线型 cv::polylines(image, pts_v, npts_v, 2, true, cv::Scalar(255, 0, 255), 2, 8, 0);// 使用vector绘制多边形 std::vectorcv::Point points_v; // 随机生成5个点 for (int i 0; i 5; i) {points_v.push_back(cv::Point(rand() % 600, rand() % 600)); } // 绘制多边形参数分别是图像、顶点数组、是否闭合、颜色、线宽、线型 cv::polylines(image, points_v, true, cv::Scalar(255, 0, 0), 2, 8, 0);// 绘制文字 // 参数分别是图像、文字、文字位置、字体、字体大小、颜色、线宽、线型 cv::putText(image, Hello World!, cv::Point(400, 50), cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(255, 255, 255), 2, 8, 0);四、RTSP 视频流 4.1 本机构造RTSP视频流optional # Ubuntu安装ffmpeg sudo apt-get install ffmpeg# 赋予权限 chmod x rtsp-simple-server chmod x start_server.sh # 运行服务 ./start_server.sh# 退出服务 pkill rtsp-simple-server pkill ffmpeg4.2 使用ffmpeg作为视频解码 // CAP_FFMPEGopencv 使用ffmpeg解码 cv::VideoCapture stream1 cv::VideoCapture(rtsp地址, cv::CAP_FFMPEG);五、人脸检测小例子 附件位置5.face_detection
http://www.dnsts.com.cn/news/252254.html

相关文章:

  • pc网站 手机网站 微信网站 上海wordpress的密码加密
  • 烟台做公司网站青岛主流网站
  • 做一个电商网站步骤开发公司购买的小区内娱乐设施进什么科目
  • 织梦的网站数据还原怎么做域名解析映射到网站空间怎么做
  • 玉溪网站建设公司网站开发的教学网站
  • 高权重域名做网站仙游网站建设
  • 网站怎么做关键词库成都网站平面设计
  • 网站建设在哪些python django做的网站
  • 做佛像在什么网站发贴效果好点做外贸的网站公司
  • phpstudy怎样做多个网站wordpress广告模板
  • 设计公司网站图大连今年大项目建设
  • 做外贸的网站需要什么宁波seo网站建设费用
  • 西宁市网站建设官网常州金坛网站建设
  • jsp网站开发详解外贸soho建站多少钱
  • 关于网站开发的毕业设计桥东区网站建设
  • 一个网站域名的组成gae wordpress
  • 做教育类的网站名网站开发人员分配
  • 建设一个企业网站到底要多少钱佛山建设工程交易中心网站
  • 做淘宝客必须有网站吗网站导航样式
  • 门户网站ip地址段物联网工程专业好就业吗
  • 宁波外贸公司贵阳seo推广
  • 襄阳的网站建设公司一家专门做原型的网站
  • html5效果网站网站转载代码
  • 为什么网站 关键词策划搭建一个网站需要什么
  • 晚上做设计挣钱的网站百度网页版入口
  • 南昌企业网站建设北京信息港
  • 十大网站建设排名沈阳网站建设设计公司
  • 如何做阅读网站搜狗站长
  • 淄博专业网站建设哪家好django 网站开发案例
  • 厦门建设局网站2018h5自响应式网站模版