OpenCV与视觉
文章平均质量分 82
opencv、以及学习机器视觉的笔记
高万禄
一个菜鸡
展开
-
树莓派Linux使用OpenCV进行摄像头视频流直播 Linux WiFI图传 Node Addon C++、C++、OpenCV、H264、WebSocket
树莓派Linux使用OpenCV进行摄像头视频流直播 Linux WiFI图传 Node Addon C++、C++、OpenCV、H264、WebSocket原创 2023-04-19 03:28:57 · 717 阅读 · 1 评论 -
C++实现简单的3D渲染【线性代数】
C++实现简单的3D渲染原创 2022-05-01 17:21:04 · 7194 阅读 · 2 评论 -
2021 大学生电子设计竞赛 G题 无人机 识别部分
硬件解决方案前视OpenMV与下视OpenMVOpenMV代码仓库github: https://github.com/gaowanlu/electronic-design-competitionGithub开源仓库视觉ROI模型建立ROI模型图如 图表3所示,本项目采用视觉图像大小为 160*120(即宽为 160像素 高为120像素)。在图像中设计四个ROI区域,图表 3 ROI模型利用ROI模型设计识别算法当右上区域的内绿色色块的高大于右上区域高的二分之一,与宽度大于右上区域宽的原创 2021-11-19 21:17:26 · 10484 阅读 · 5 评论 -
opencv 像素操作 c++
#include <opencv2\opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(){ Mat img = imread("./test.jpg"); cvtColor(img, img, CV_BGR2GRAY); for (int i = 0; i < img.rows; ++i) { for (int j = 0; j < img.col原创 2020-12-07 00:39:13 · 332 阅读 · 0 评论 -
OpenCV3图形距
OpenCV3图形距相关APImoments(IntputArray array,//输入数据bool binaryImage=false//是否为二值图像)contourArea(InputArray contour,//输入轮廓数据bool oriented//默认false,返回绝对值)arcLength(InputArray curve,//输入曲线数据bool closed//是否是封闭曲线)...原创 2020-08-10 02:00:54 · 250 阅读 · 0 评论 -
OpenCV3绘制字体
putText(img, “1234567890”, Point(200, 200), FONT_HERSHEY_SIMPLEX,1,Scalar(255, 0, 0));#include<iostream>#include<opencv2/opencv.hpp>#include<opencv2/highgui.hpp>using namespace std;using namespace cv;int main(int argc, char** argv)原创 2020-08-06 23:43:50 · 317 阅读 · 0 评论 -
OpenCV3视频加载
OpenCV3视频加载Videocapture视频对象Videocapture.open(video_file_name)//打开视频文件Videocapture>>Mat//加载帧到Mat对象视频加载结束后再加载Mat,则Mat为空#include<iostream>#include<opencv2/opencv.hpp>#include<opencv2/highgui.hpp>using namespace std;using nam原创 2020-08-06 22:41:19 · 556 阅读 · 0 评论 -
OpenCV图像模糊处理(均值模糊与高斯模糊)
#include<opencv2/opencv.hpp>#include<opencv2/highgui.hpp>//opencv highgui模块头文件#include<opencv2/imgproc.hpp>//opencv 图像处理头文件using namespace cv;int main(){ Mat img = imread("test.jpg"); //显示原始图像 imshow("pic", img); //对图原创 2020-07-27 17:01:01 · 395 阅读 · 0 评论 -
OpenCV图像腐蚀操作
#include<opencv2/opencv.hpp>#include<opencv2/highgui.hpp>//opencv highgui模块头文件#include<opencv2/imgproc.hpp>//opencv 图像处理头文件using namespace cv;int main(){ Mat img = imread("test.jpg"); //显示原始图像 imshow("pic", img); //进行原创 2020-07-27 16:43:29 · 422 阅读 · 0 评论 -
OpenCV3轮廓周围绘制矩形框和圆形框
轮廓周围绘制矩形框和圆形框相关APIapproxPolyDP(InputArray curve,OutputArray approxCurve,double epsilon,bool colsed)//基于RDP算法实现,目的是减少多边形轮廓点数轮廓周围绘制矩形APIcv::boundingRect(InputArray points)得到轮廓周围最小的矩形左上点坐标和右下角点坐标,绘制一个矩形cv::minAreaRect(InputArray points)得到一个旋转的矩形,返回旋转矩形原创 2020-08-05 14:11:02 · 360 阅读 · 0 评论 -
OpenCV3凸包
凸包凸包概念:在一个多边形边缘或者内部任意两个点的连线都包含在多边形边界或者内部定义:包含点集合s中所有点的最小凸多边形称为凸包相关API:convexHull(InputArray point,//输入候选点,来自findcontoursOutputArray hull,//凸包bool clockwise,//default true顺时针方向bool returnPoint//true表示返回点的个数,如果第二个参数是vector则自动忽略)相关步骤首先把图像转为灰度然后再原创 2020-08-05 13:36:25 · 281 阅读 · 0 评论 -
OpenCV3轮廓发现
轮廓发现轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法。所以边缘提取的阈值选定会影响最终轮廓发现结果相关APIfindContours发现轮廓drawContours绘制轮廓函数使用以及参数详情在二值图像上发现轮廓使用APIcv::findContours(InputOutputArray,//输入图像,非0的像素被看成1,0的像素值保持不变,8-bitOutputArray,//全部发现的轮廓对象OutputArray,该图的拓扑结构,可选,该轮廓发现算法正是基于图像拓扑结构实原创 2020-08-05 12:55:25 · 304 阅读 · 0 评论 -
OpenCV3模板匹配Template Match
功能在父图像中寻找幅图像中的子图像相关APICV::matchTemplate(InputMat,//原图像InputMat,//模板图像OutputArray result,//输出结果,必须是单通道32位浮点数,假设原图像widthheight,模板图像WIDTHHEIGHT,则结果必须为width-WIDTH+1,height-HEIGHT+1的大小input method,//使用的匹配方法InputArray mask=noArray()//(optional))...原创 2020-08-05 11:51:44 · 1051 阅读 · 0 评论 -
OpenCV3霍夫变换(圆检测)
OpenCV3霍夫圆检测原理图(来自于51CTO教学视频)相关API原创 2020-08-04 00:03:38 · 809 阅读 · 0 评论 -
OpenCV3霍夫变换检测直线
霍夫变换-直线Hough Line Transform用来做直线检测前提条件:边缘检测已经完成平面空间到极坐标空间转换相关API:cv::HoughLinesP(InputArray src.//输入图像,必须8-bit的灰度图像OutputArray lines,//输出的极坐标来表示直线double rho,//生成极坐标时候的像素扫描步长double theta,//生成极坐标时候的角度步长,一般取值PI/180int threshold,//阈值,只有获得足够交点的极坐标点才被看原创 2020-08-03 23:34:59 · 491 阅读 · 0 评论 -
OpenCV3边缘检测Canny
高斯模糊GaussianBlur灰度转换cvtColor计算梯度Sobel/Scharr非最大信号抑制高低阈值输出二值图像APIcv::Canny(InputArray src,//8-bit的输入图像OutputArray edges,//输出边缘图像,一般都是二值图像,背景是黑色double threshold1,//低阈值,常取高阈值的1/2或者1/3double threshold2,//高阈值int aptertureSize.//Soble算子的size,通常3*3,原创 2020-08-03 22:57:46 · 390 阅读 · 0 评论 -
OpenCV3图像上采样与下采样
相关APIpyrUp(Mat,输出Mat,Size(cols2,row2));//放大多少倍pyrDown(Mat,输出Mat,Size(cols/2,rows/2));//缩小多少倍原创 2020-08-03 00:37:04 · 595 阅读 · 0 评论 -
openCV3形态学操作(提取水平与垂直直线)
//形态学操作#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(int argc, char** argv) { const char* file = "./12.png"; Mat img = imread(file); cvtColor(img, img, CV_BGR2GRAY); threshold(img, img, 1原创 2020-08-03 00:07:20 · 515 阅读 · 0 评论 -
OpenCV3形态学基本操作
《开操作》先腐蚀后膨胀可以去掉小的对象,例如黑色背景中,有一个白色的大矩形,还有一些小的白色的区域,经过开操作哪些小的白色区域将会变为背景色。《闭操作》先膨胀后腐蚀可以填充很小的洞,例如原来的图像背景色为黑色,有一个白色矩形中有一个黑色的小洞,则经过比操作中间那个黑色的小洞将会被填充。相关APImorphologyEx(src,dest,CV_MOP_BLACKHAT,kernel);-Mat src-输入图像-Mat dest-输出图像-int OPT——CV_MOP_OPEN /原创 2020-08-02 23:22:09 · 324 阅读 · 0 评论 -
OpenCV3滑动条的创建
//opencv滑动条的创建//以阈值操作为例子#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;Mat img = imread("./test.jpg");int m = 127;void bar(int,void*) { cout << m << endl; threshold(img, img, m, 255, T原创 2020-08-02 22:33:46 · 239 阅读 · 0 评论 -
OpenCV3图像处理(dilate膨胀)
#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(int argc, char** argv) { Mat img = imread("./test.png"); Mat element = getStructuringElement(MORPH_RECT, Size(3,3)); //getStructuringElement()函原创 2020-08-02 22:09:17 · 557 阅读 · 0 评论 -
OpenCV图像对比度与亮度(OpenCV3)
#include <opencv2\opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(){ Mat a = imread("./a.jpg"); Mat output = Mat::zeros(a.size(), a.type()); //定义一个新的Mat对象大小类型与a相同 //对每个Mat的像素进行处理 for (int i = 0; i < a.原创 2020-07-31 09:12:54 · 301 阅读 · 0 评论 -
OpenCV图像混合
#include <opencv2\opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(){ Mat a = imread("./a.jpg"); Mat b = imread("./b.jpg"); //要求a与b的大小应该相等 Mat out; addWeighted(a, 0.5, b, 0.5, 0.0, out); imshow("out",out)原创 2020-07-31 08:56:03 · 211 阅读 · 0 评论 -
OpenCV像素操作(OpenCV3)
#include <opencv2\opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(){ Mat img = imread("./test.jpg"); cvtColor(img, img, CV_BGR2GRAY); for (int i = 0; i < img.rows; ++i) { for (int j = 0; j < img.col原创 2020-07-31 02:21:14 · 310 阅读 · 0 评论