opencv常用api

devtools/2024/11/14 11:59:36/

opencvapi_0">opencv常用api

截取图像

cv::Mat pic2;
pic(cv::Rect(50, 50, 200, 200)).copyTo(pic2);
cv::imshow("Image Display2", pic2);

将图像区域复制到图像指定的区域

pic2.copyTo(pic(cv::Rect(200, 200, 200, 200)));
cv::imshow("Image Display3", pic);

通过迭代器获取图像像素

void ModifyColorData(cv::Mat& img , cv::Mat& out , int pixel) {// 通过迭代器获取图像的像素out = img.clone();cv::Mat_<cv::Vec3b>::iterator itstart = out.begin<cv::Vec3b>();cv::Mat_<cv::Vec3b>::iterator itend = out.end<cv::Vec3b>();for (; itstart != itend; itstart++) {(*itstart)[0] = (*itstart)[0] / pixel * pixel + pixel / 3;(*itstart)[1] = (*itstart)[1] / pixel * pixel + pixel / 3;(*itstart)[2] = (*itstart)[2] / pixel * pixel + pixel / 3;}cv::imshow("目标图像", out);/*vec3b* 全部类型为 cv::Vec{2,3,4,6,8}{b,d,f,i,s,w}* 其中数字2,3,4,6,8表示列向量的长度* 字母 b ,d , f, i ,s ,w表示类型* b-->uchar , d-_>double , f-->float , i-->int , s-->showt , w-->ushort* 数字和类型之间的组合,构成不同的Vec向量*/
}

绘制直线

void drawLine(cv::Mat& img) {// 定义点  ,第一种方式cv::Point p1 = cv::Point(20, 30);// 定义点  ,第二种方式cv::Point p2;p2.x = 250;p2.y = 30;// 定义线的颜色cv::Scalar myColor = cv::Scalar(0,0,255); // bgr// 在背景绘制线条cv::line(img, p1, p2, myColor , 5 , cv::LINE_8);  // cv::LINE_8
}

绘制矩形

void drawrectangle(cv::Mat& img) {cv::Rect rect = cv::Rect(50, 50, 250, 300);// 设置颜色cv::Scalar color = cv::Scalar(255, 0, 0);cv::rectangle(img, rect, color, 3, cv::LINE_8);
}

绘制圆

void drawcircle(cv::Mat& img) {// 确定圆心cv::Point point = cv::Point(img.cols / 2, img.rows / 2);// 设置颜色cv::Scalar color = cv::Scalar(0, 255, 0);// 绘制园cv::circle(img, point, 100, color, 2 , cv::LINE_8);
}

绘制椭圆

void drawellipse(cv::Mat& img) {// 确定圆心cv::Point point = cv::Point(img.cols / 2, img.rows / 2);// 设置颜色cv::Scalar color = cv::Scalar(0, 255, 255);cv::ellipse(img , point , cv::Size(20, 50) , 0 , 0 , 360 , color);
}

绘制多边形

void drawpolyline(cv::Mat& img) {// 定义多边形的顶点坐标std::vector<cv::Point> pts;pts.push_back(cv::Point(50, 50));pts.push_back(cv::Point(200, 50));pts.push_back(cv::Point(200, 200));pts.push_back(cv::Point(50, 200));cv::polylines(img , pts , true , cv::Scalar(0, 255, 0) , 3 , cv::LINE_8);
}

http://www.ppmy.cn/devtools/133918.html

相关文章

大模型生成策略参数详解:Top-K、Top-P 和 Temperature

文章目录 1. Top-K&#xff1a;限制候选词数量举例总结 2. Top-P&#xff08;核采样&#xff09;&#xff1a;控制候选词的累积概率举例总结 3. Temperature&#xff1a;控制生成的随机性举例总结 综合使用&#xff1a;Top-K、Top-P 和 Temperature 的平衡总结推荐阅读文章 在大…

uni-app选项卡制作 ⑥

文章目录 十、选项卡制作一 、组件创建二、scroll-view 组件使用三、点击设置按钮跳转到标签设置界面四、数据获取 十、选项卡制作 1.遇到错误&#xff1a; 2.解决问题&#xff1a; 3.this 指向问题 // 指向&#xff1a; get_label_list uniCloud.callFunction({name: "g…

Day107:代码审计-PHP模型开发篇MVC层RCE执行文件对比法1day分析0day验证

知识点&#xff1a; 1、PHP审计-MVC开发-RCE&代码执行 2、PHP审计-MVC开发-RCE&命令执行 3、PHP审计-MVC开发-RCE&文件对比 MVC 架构 MVC流程&#xff1a; Controller截获用户发出的请求&#xff1b;Controller调用Model完成状态的读写操作&#xff1b;Contr…

MySQL第七章,项目案例:保险管理系统

学了这么久来做一次项目&#xff0c;总结一下吧 保险管理系统首先来规划一下数据表 然后设计步骤 1. 规划数据库表 首先&#xff0c;你需要确定系统需要哪些数据表。一个基本的保险管理系统可能包括以下几个表&#xff1a; 用户表&#xff08;Users&#xff09;&#xff1…

Spring声明式事务 编程式事务

Spring声明式事务 1.事务的概念 1.1编程式事务 编程式事务是指手动编写程序来管理事务&#xff0c;即通过编写代码的方式直接控制事务的提交和回滚 Connection conn …; ​ try{ //开启事务&#xff1a;关闭事务的自动提交 conn.setAutoCommit(false); //业务代码 … //提交…

【Linux篇】面试——用户和组、文件类型、权限、进程

目录 一、权限管理 1. 用户和组 &#xff08;1&#xff09;相关概念 &#xff08;2&#xff09;用户命令 ① useradd&#xff08;添加新的用户账号&#xff09; ② userdel&#xff08;删除帐号&#xff09; ③ usermod&#xff08;修改帐号&#xff09; ④ passwd&…

2024年计算机视觉与图像处理国际学术会议 (CVIP 2024)

目录 大会简介 主办单位&#xff0c;协办单位 组委会 主讲嘉宾 征稿主题 参会方式 会议议程 重要信息 会议官网&#xff1a;iccvip.org 大会时间&#xff1a;2024年11月15日-17日 大会地点&#xff1a;中国 杭州 大会简介 2024年计算机视觉与图像处理国际学术会议(C…

从0开始机器学习--Day16--神经网络作业

题目&#xff1a;构建逻辑回归模型来识别数字0-9 代码如下&#xff1a; import numpy as np from scipy.io import loadmat import scipy.optimize as opt from sklearn.metrics import classification_report# 定义函数sigmoid&#xff0c;方便后续假设函数以sigmoid&#x…