机器视觉
文章平均质量分 57
向晚大魔王Avvvvvva
华南农业大学软件工程学生
展开
-
sim2real环境配置教程
由于官方提供的docker镜像地址源在国外,下载速度很慢,因此这里为提前将对应的服务端和客户端镜像都上传到了阿里云,先将镜像tar包下载到本地,在下载tar包的时候可以一边完成下面的操作。sim2real官方安装教程按照官方教程安装即可,这里说一下几个要点:主要是宿主机操作这一步骤存在较多差异,请主要参考本文档首先将启动脚本下载到本地,然后按照官方的提示文档安装:启动脚本如图注意宿主机操作的第二步操作[]这一步有坑,请按照我给的视频进行安装:注意宿主机操作的第五步操作[],这里的话的操作步骤如下:进入到如原创 2022-07-02 11:27:04 · 1568 阅读 · 0 评论 -
平面最佳坐标点
题目描述竞赛题C 平面最佳坐标点Time Limit:3000MS Memory Limit:65535K题型: 编程题 语言: 无限制描述 在平面坐标上,给n个坐标点,现定义两个点(x1,y1)和(x2,y2)的“距离”为|x1-x2|3+|x1-x2|*|y1-y2|+|y1-y2|3 现要求编程找一个点,使得n个点到该点的距离累加和最小,精度去到小数点3位输入格式第一行一个数n(n<=1000),此后n行,每行两个浮点数为坐标点x y(0<=x,y<=1000原创 2021-09-22 22:33:38 · 172 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(11)深入理解直方图和滤波器
直方图概述直方图是变量分布的统计图表示,它让我们能够理解数据的密度估计和概率分布。直方图是通过整个变量值范围划分为小的值范围,然后计算每个间隔落入多少个值来创建的编码实现 //首先判断图像的类型 if (src.channels() == 1) {//灰度图像 // do something } else if (src.channels() == 3) {//BGR三通道图像 //1.将BGR三通道图像弄成vector std::vector <Mat> bgr;原创 2021-09-15 10:31:58 · 386 阅读 · 0 评论 -
图像分割算法(BFS)
题目描述描述给定一个n行m列的二值图像,0为背景,1为前景物,请计算该图像中有多少块区域块(由连接的1构成),并输出最大的区域块的像点数。同一个区域块中的点要么是连接的,要么是存在包围关系。判断两个区域是否连接采用四邻域判定,即一点仅与它的上下左右四个点相连;判断两个区域是否存在包含关系即一个区域被另一个区域完全包围,如下所示,中间的两个1被外面的16个1完全包围(中间的两个1不存在通往外界的四邻域通路)0000000000111110001000010010110100100001原创 2021-09-12 23:51:30 · 400 阅读 · 0 评论 -
Opencv4(C++)案例5:采取纯编码 不调用任何api的方式找十字中心点
需求分析原创 2021-09-12 23:42:18 · 859 阅读 · 0 评论 -
Opencv4(C++)实战案例4:数白块
需求分析读入一个视频流,对视频流中的白块进行计数.案例方法:实现运动目标检测(追踪)待选方法:①帧差法基本原理就是在图像序列相邻两帧或三帧间采用基于像素的时间差分通过闭值化来提取出图像中的运动区域。帧差法仅仅做运动检测。网上经常有人做个运动检测,再找个轮廓,拟合个椭圆就说跟踪了,并没有建立帧与帧之间目标联系的,没有判断目标产生和目标消失的都不能算是跟踪吧。首先,将相邻帧图像对应像素值相减得到差分图像,然后对差分图像二值化,在环境亮度变化不大的情况下,如果对应像素值变化小于事先确定的阈值时,可以认原创 2021-09-05 11:20:25 · 340 阅读 · 0 评论 -
Opencv4(C++)实战案例3:提取在复杂环境下的特定目标轮廓
问题引出要做的是,不要提取到树叶和树枝,只是把荔枝(果实)的轮廓提取出来思路1.首先将RGB图像转成HSV图像2.在HSV下,将色温为红色的标白,其他颜色的标黑.3.然后根据这个图,双重for循环,检测周围的点,如果是01分界就打点,否则继续遍历下一个点。转化为HSV图像并且完成标记#include <opencv2/opencv.hpp>#include <stdio.h>#include <cstring>using namespace std原创 2021-08-26 21:59:02 · 3341 阅读 · 0 评论 -
Opencv4(C++)实战案例1:将朦胧的图像变清晰(去雾)
本文的主要思想参考了以下文章,学习过程中对各个api进行了了解和分析。原文CV_Assert检查运行情况,如果出现错误,则显示错误信息。在括号内填入想要检测的信息然后错误则抛出一个异常,否则就返回true在这里就相当于我们做的一个image.empty()检测。src.convertTo(dst, type, scale, shift)注意也不是所有格式的Mat型数据都能被使用保存为图片,目前OpenCV主要只支持单通道和3通道的图像,并且此时要求其深度为8bit和16bit无符号(即CV_1原创 2021-08-19 14:55:18 · 6243 阅读 · 1 评论 -
Opencv视觉处理(C++)语法学习(10)实践案例:实时人脸识别+美颜
该案例的思路:首先用老师提供的gitee仓库下载文件,因为有墙原本的脚本没办法用的。下载->models->facedector接着就是我们的demo演示了原创 2021-08-17 15:10:49 · 399 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(9)图像基础知识整理巩固
图像直方图void QuickDemo::histogram_demo(Mat& img){ //进行三通道的分离 std::vector<Mat> bgr_plane; split(img,bgr_plane); //定义预备用的参数 const int channel[1] = { 0 }; const int bins[1] = { 256 }; float Range[2] = { 0,255 }; const float* histRange = { Ran原创 2021-08-17 13:20:49 · 306 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(8)视频流读入与视频处理
读取视频流的方法void QuickDemo::video_demo(Mat &img){ // 读取视频需要调用api 产生一个对象,并调用对象中的方法 VideoCapture capture("E:/data/vtest.avi"); Mat frame; while (1) { capture.read(frame); flip(frame, frame, 1); if (frame.empty()) { break; } imshow("fram原创 2021-08-17 10:25:20 · 887 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(7)图像像素转化与图像几何变换
图像像素转化使用场景:将像素类型(数据类型)转化为同一类型,将图像的灰度值(0-255)转化为0-x之间进行一个归一化void QuickDemo::norm_demo(Mat& img){ cout << endl; Mat dst; img.convertTo(img, CV_32F);//将原图像转化为一个浮点数类型的图像 //std::cout << (img.type())<<'\n' << (dst.type()); //输原创 2021-08-16 16:11:07 · 650 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(6)鼠标操作与相应
认识调用鼠标操作的api及其参数设定首先说一下原理:首先是在opencv产生的窗口中设定一个监听事件,用来监听鼠标的操作,鼠标的操作将会被系统捕获,然后返回到opencv中的鼠标的响应函数中去,这个响应函数在定义之初就被绑定到鼠标操作的事件上去了,这样的一个流程下来就形成了用户鼠标操作,在opencv窗口中引起相应的变化的这么一个过程。1.调用鼠标操作的apisetMouseCallback("鼠标操作", on_draw, (void*)(&img));2.鼠标操作结束之后系统监听到的事原创 2021-08-16 00:19:37 · 1023 阅读 · 1 评论 -
Opencv视觉处理(C++)语法学习(5)几何图像绘制
基本几何图像的绘制四种基本图形的绘制void QuickDemo::draw_demo(Mat& img){ //绘制矩形 //1.定义一个矩形 Rect rect; rect.x = 200;//绘制的起始坐标 rect.y = 200;//绘制的起始坐标 //在计算机中,x和y的起点都是在左上角,窗口的左上角开始,向右则x增大,向下则y增大 rect.width = 200;//横 rect.height = 200;//纵 //2.调用api绘制矩形 rectangl原创 2021-08-15 17:36:44 · 302 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(4)通道的分离、合并与图像色彩转换
ss原创 2021-08-14 16:29:46 · 480 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(3)图像的算术与逻辑运算
通过设定Scalar算子的算术运算操作void QuickDemo::operator_demo(Mat& img){ //演示画布任意操作 Mat dst; dst = img + Scalar(50, 50, 50);//这样加法的操作之后会发现图片会亮一些 /* imshow("src", img); imshow("dst", dst); */ dst = img - Scalar(50, 50, 50);//这样减法的操作之后会发现图片会亮一些 //dst原创 2021-08-14 00:03:48 · 1525 阅读 · 2 评论 -
Opencv视觉处理(C++)语法学习(2)图像对象的创建及其参数说明
学习目的:1.了解如何操作Mat2.如何遍历Mat对象中包含的每一个元素3.如何创建一个空图或者Mat创建Mat对象的方法1.clone()函数调用src=img.clone();2.直接赋值法src=ming;3.拷贝API调用img.copyTo(dst);创建空白图像的方法 Mat CreateEmptyLikeSrc(Mat src) { Mat m1 = Mat::zeros(src.size(), src.type()); Mat m2 = Mat::ze原创 2021-08-13 18:05:45 · 678 阅读 · 0 评论 -
Opencv视觉处理(C++)语法学习(1) 环境部署与读取图片显示图片的基本函数
OpenCV简介OpenCV 的全称是 Open Source Computer Vision Library ,是一个跨平台的计算机视觉库。OpenCV 是由英特尔公司发起并参与开发,以 BSD 许可证授权发行,可以在商业和研究领域中免费使用。OpenCV 可用于开发实时的图像处理、计算机视觉以及模式识别程序。OpenCV 的 CV 模块包含基本的图像处理函数和高级的计算机视觉算法。 ML 是机器学习库,包含一些基于统计的分类和聚类工具。HighGUI 包含图像和视频输入 / 输出的函数。CXCore原创 2021-07-11 21:57:17 · 337 阅读 · 0 评论 -
数字图像处理(书内笔记)
第一章 绪论1.数字图像处理的基本步骤数字图像处理有两大类,一类是其输入和输出都是图像,另一类,输入可能是图像,但输出是从图像中提取的特征属性。一般图像处理有:①图像获取(图像获取中通常还包括有比例尺的设定等预处理环节)②图像增强:增强技术后面的思路通常是显现那些被模糊的了细节,或简单地突出一副图像中感兴趣的特征,增强是图像处理中非常主观的领域。③图像复原:图像复原是改进图像外貌的一个领域,图像复原是客观的,以一些数学模型为基础。④彩色图像处理⑤压缩:减少图像的存储量,或者在传输图像的时候降转载 2021-07-11 18:20:51 · 1103 阅读 · 0 评论