opencv和AI
文章平均质量分 61
以opencv为基础,写一些实用的技巧
qianbo_insist
AI,网络安全,nodejs,c++ ,java,.net
email :[email protected]
weixin:18091589062
展开
-
视频输入c++ 调用 libtorch推理
libtorch 支持GPU情况比较奇怪,目前2.3 版本需要在链接器里面加上以下命令,否则不会支持gpu-INCLUDE:?原创 2024-04-27 04:54:00 · 429 阅读 · 1 评论 -
使用零拷贝技术加速视频图像操作
总结起来,使用cv::cuda::HostMem的主要优点在于:减少数据拷贝:利用CUDA的零拷贝技术,可以避免不必要的内存复制,提高数据交互效率。优化内存访问:通过设置合适的内存属性(如OST_MEM_WRITE_COMBINING),可以提高内存访问性能。请注意,实际效果取决于硬件环境、CUDA驱动支持以及具体的应用场景。对于现代GPU架构,特别是在支持统一内存访问(UMA)或非一致性内存访问(NUMA)的系统上,使用HostMem可以获得更好的性能优势。原创 2024-04-26 06:55:26 · 264 阅读 · 0 评论 -
如何使用cuda进行图像矫正
相机矫正我们经常会用到,如果没有gpu加速,实际上矫正会很吃力,我们先用普通的矫正。原创 2024-04-16 13:13:40 · 393 阅读 · 0 评论 -
ffmpeg cuda硬件解码后处理使用opengl渲染,全硬件流程
整个流程是一旦数据到了cuda内核,就不要轻易下载到内存,直接在cuda里面进行操作,一直到渲染完毕,后面在给出完整的代码示例。原创 2024-04-08 21:12:08 · 516 阅读 · 0 评论 -
jetson deepstream 解码接入编码输出
在jetson主板上安装gstreamer工具链,编译opencv上面的opencv 肯定是少编译了很多东西,尤其是cuda的编译,需要大家自己去写参数编译,jetson上编译挺费时间的,耐心做就行了。原创 2024-01-06 15:05:37 · 994 阅读 · 0 评论 -
opencv hand openpose
使用opencv 得dnn 模块调用 caffemodel得程序,图片自己输入就行,不做过多得解释,看代码清单。const int POSE_PAIRS[20][2] ={{0,1}, {1,2}, {2,3}, {3,4}, // thumb{0,5}, {5,6}, {6,7}, {7,8}, // index{0,9}, {9,10}, {10,11}, {11,12}, // middle{0,13}, {13,14}, {14,15}, {15,1原创 2023-07-26 08:55:45 · 1577 阅读 · 0 评论 -
opencv图像-拼接线的处理
opencv 基础函数opencv 拼接两副图像是很好处理的,如左右拼接, 使用colRange,上下拼接,使用rowRange,这两个函数在opencv里封装的比较好,注意是左闭右边开的函数。1 rowRange colRangeinline Mat Mat::rowRange(int startrow, int endrow) const{ return Mat(*this, Range(startrow, endrow), Range::all());}inline Mat Mat原创 2021-09-04 16:12:55 · 1677 阅读 · 0 评论 -
协议圣经 五 rtsp client
继续上一节,我们使用live555之后得到rtsp的流,然后再解码进行下一步动作。先进行基础播放,然后再进行分析,后接opencv,直接将码流解到opencv的mat 中。c++11 threadc++11 thread 比起使用api 或者 pthread lib 要方便很多了,两种方式比较推荐1 使用lamba2 使用封装并继承thread 封装class c_thread{private: //线程 thread _thread; //等待信号 std::mutex _sig原创 2021-08-03 21:38:10 · 814 阅读 · 0 评论 -
opencv 亮度增强 二
#pragma once#include <stdio.h>#include <string.h>#include <stdlib.h>#include <malloc.h>#include #include typedef struct sdata{uint32_t index;char vardata[128];}sdata;struct Rule {bool operator()(const sdata &a1, con原创 2021-08-02 22:26:52 · 652 阅读 · 0 评论 -
识别手指pos 20个
识别结果可惜非GPU结果8秒,后面使用GPU试一下到底能达到多少#include <opencv2/dnn.hpp>#include <opencv2/imgproc.hpp>#include <opencv2/highgui.hpp>#include using namespace std;using namespace cv;using namespace cv::dnn;#ifdef _DEBUG#pragma comment(lib,“op原创 2021-03-31 07:40:53 · 147 阅读 · 0 评论 -
深度学习之 epoch batch iteration
知识点无论是使用yolo3,4 都是一样的过程,例如使用yolo3 去训练的时候,使用参数tran来训练,darknet的好处是可以使用opencv直接来kd.data7 分类,也就是输出可能是7种里面的一种classes = 7train = J:/AI/darknet-train/data/train.txtvalid = J:/AI/darknet-train/data/val.txtnames = J:/AI/darknet-train/data/KD.namesbackup = J原创 2021-07-29 08:36:05 · 1154 阅读 · 0 评论 -
Fast-SCNN 多分支结构共享低级特征的语义分割网络 (一)
1、fast-scnn 应用场景github代码根据对论文的研究,暂时整理了四类使用场景1 、自动驾驶汽车快速实时识别语义分割根据论文 fast-scnn本身就是为实时物体分类来做的,从语义级别上来共享特征。2 、底图层次分割3、城市房量统计4、人流量统计2、现代神经网络需求以下为论文的开头截图。谈到了encoder-decoder framework1 以上算法要有的需要实时性,像自动驾驶实时性非常高,有的不需要,但是对底图和图量多并且大是非常需要这类网络的,语义分割是整个视觉原创 2021-07-27 14:36:40 · 1002 阅读 · 3 评论 -
opencv 亮度非线性变化 一
opencv 的hsv 和变换效果原图比较暗淡,我们需要调整他的亮度来做变换来看清楚这幅图知识点:通道0 channels[0]是色调通道1 channels[1]是饱和度通道2 channels[2]是亮度实际上亮度就是灰度图hsv图是根据颜色变换而来,中间这幅图实际上就是灰度图,我们可以为灰度图调整,从而在合并来做,不过今天我们直接使用opencv的saturate_cast更为方便int main(){ s_param sp; //输入图像 sp.img = imrea原创 2021-07-25 20:51:35 · 754 阅读 · 2 评论 -
opencv 伽马变换
1、算法原理伽马变换一种灰度变换,属于简单图像增强,也称幂律变换先介绍两个函数1、normalize归一化normalize(imageGamma, imageGamma, 0, 255, CV_MINMAX);2、convertScaleAbs可实现图像增强等相关操作的快速运算,then by calculating an absolute value of the result.计算绝对值。cv::convertScaleAbs()用于实现对整个图像数组中的每一个元素进行输入输出操作原创 2021-07-22 19:24:02 · 2140 阅读 · 1 评论 -
基于神经网络预测车道行驶的自动驾驶
首先定义我们在自动驾驶,并且可以获取前后左右各个车的数据。传感器和摄像头已经在车身上部署好。 假定我们在车道上行驶,根据跟驰模型数据我们能知道的是:1 左车距离2 右车距离3 前车距离为了简化问题,我们暂时不使用后车距离,事实上我们也是可以获取的。原创 2021-07-22 15:16:59 · 1950 阅读 · 2 评论 -
opencv HOG SVM 二
这一部分是hog svm 识别部分训练部分show me the code#include <iostream>#include <fstream>#include <opencv2/core/bufferpool.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/objdetect原创 2021-07-18 17:11:50 · 243 阅读 · 0 评论 -
opencv HOG SVM
show me the code这个无需多做解释,可以直接看代码,这一部分是训练部分。#include <iostream>#include <fstream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/objdetect/原创 2021-07-18 17:05:03 · 374 阅读 · 0 评论 -
搜索图片及相似度探秘 二
一在这里搜索图片及相似度探秘 一还是继续,准备了五幅图片两个易烊千玺,两个肖战,一个地球星空还是像上次那样,准备均值和标准差,但是这次,多了一个图片索引hash计算,这次计算的是整个图片的均值和hash,然后将缩小的图片减去均值,来求大于和小于的概率统计,因为并非真实图片的统计,是8*8 像素的图片统计,所以具有一定的概率性。ok,以下是代码string compare_func(){ string retString = "{\"ret\":\"file is null\"}"; Ma原创 2021-07-18 16:45:01 · 282 阅读 · 2 评论 -
新型智慧讲台的人工智能
智慧讲台智慧讲台是一种多媒体的讲台,现代的讲台,已经加入了更多的元素,例如人工智能,并不是为了跟风潮流,试想一下,在教师讲课的时候,如:1、历史课在教师语音重点在恐龙的时候,讲台负责语音和语义分析,2、地理课3、图画课4、音乐课5、其他艺术类课6、化学课人工智能解决的问题人工智能解决的问题在于解放老师的思维,辅助和超越讲课的内容,激发孩子的想象力,想象力是无穷的,当给孩子在讲授更新孩子神经元的节点上,孩子的接收能力是远远超过我们的想象力的,这种力量不在于强迫填鸭教育,而是根据孩子们的视原创 2021-07-18 09:43:39 · 842 阅读 · 2 评论 -
搜索图片及相似度探秘 一
均值和标准差一副图片的均值和标准差是可以看出两幅图片的差异的,首先我们把两幅图片缩放到足够小的状态,例如8*8cv::resize(image1, a1, cv::Size(8,8));计算标准差cv::meanStdDev(a1, mat_mean1, mat_stddev1);opencv的函数非常方便,是一个强有力的工具,里面直接计算出了均值,而标准差放在了mat_stddev里面。我们导入三张图片很明显,我们可以看出1和2 是有相似之处的,摄像头拍摄的远景图片基本都是房子和树木,原创 2021-07-17 22:36:58 · 332 阅读 · 1 评论 -
opencv ORB特征匹配
基础知识点···#include #include <unordered_map>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;#ifdef _DEBUG#pragma comment(lib,“opencv_world440d.lib”)#else#pragma comment(lib,“opencv_world440.lib”)#endifint main(){/原创 2021-07-11 15:47:50 · 674 阅读 · 0 评论 -
opencv 模板匹配
我的其他文章AKAZE 局部特征匹配级联分类器使用等比例缩放图片给图片加logo鱼眼校正智能答卷识别opencv滤镜效果灰度图像增强方式更多文章正在写作过程中。基础知识点模板匹配意思就是找一副已经存在的图片,从其他图片中查找近似的图片,接下来我们准备两幅大图,一副小图准备两幅大图,监控里面的截图并且时间不一样,角度也不一样图片一图片二可以看出两幅图片是不一样的,由于摄像头角度偏摆,部分图片并不一样,角度也不一致show me the code#include <原创 2021-07-11 15:28:23 · 1277 阅读 · 9 评论 -
opencv AKAZE 局部特征匹配算法
基础知识点AKAZE特征提取算法是局部特征描述子算法,是SIFT算法的改进、采用非线性扩散滤波迭代来提取与构建尺度空间、采用与SIFT类似的方法寻找特征点,1 在描述子生成阶段采用ORB类似的方法生成描述子2 描述子比ORB多了旋转不变性特征3 ORB采用LDB方法,KAZE采用 M-LDB。orb算法获取尺度不变性,构建了图像金字塔,在金字塔的每一层上都检测关键点。AKAZE则是改进算法。实际上,把AKAKE改成ORB就是执行ORB算法//opencv里面,修改算法名称即可 Ptr<原创 2021-07-11 15:04:54 · 3565 阅读 · 0 评论 -
级联分类器-opencv使用
最简单的使用级联分类器使用方法特别简单,调入一个文件即可,也可以做训练,具体训练方法参考其他,这里是如何使用侦测前脸使用训练好的文件haarcascade_frontalface_alt.xml,注意不要单独拷贝这个文件,opencv 还需要etc下面的其他文件#include <vector>#include <iostream>#include <cstdlib>#include <fstream>#include <opencv2/原创 2021-07-10 13:22:30 · 993 阅读 · 0 评论 -
等比例缩放图片-opencv
数据结构定义如果dw 和 dh 有值,则缩放成为dw或者dh 为最终值的图片,fix_type中msrc为源图,mdest为需要生成的图typedef enum fix_enum{ enum_x_fix, enum_y_fix, enum_xy_fix}fix_enum;typedef struct fix_type{ //int sw; //int sh; int dw; int dh; fix_enum fix;// string dest; Mat msr原创 2021-07-10 12:36:21 · 1472 阅读 · 0 评论 -
Resnet 残差网络使用案例
Resnet 网络Resnet是残差网络(Residual Network)的缩写,该系列网络广泛用于目标分类等领域以及作为计算机视觉任务主干经典神经网络的一部分,典型的网络有resnet50, resnet101等。Resnet网络的证明网络能够向更深(包含更多隐藏层)的方向发展。本篇是从国外的教程learnopencv 中的TensorFlow-Fully-Convolutional-Image-Classification而来,使用tensorflow2.1以上版本,文章中使用下载预训练的模型,改成原创 2021-07-06 21:12:28 · 2454 阅读 · 1 评论 -
目标追踪-背景差算法
mog2 算法MOG2算法,也是高斯混合模型分离算法,是MOG的改进,算法的重要特征是:为每个像素选择适当数量的高斯分布,可以更好地适应不同场景的照明变化等。高斯分布其实就是正态分布,(Normal distribution)。1、混合高斯模型:原理:将图像分为3-5个高斯模型,一个像素点来了,如果该像素点离任何一个高斯模型的距离大于其2倍的标准差,则为前景即运动物体,否则则是背景。2、code掌握其原理以后,下面直接用opencv来实现,这个只是应用而已。#include <iostre原创 2021-06-28 21:34:47 · 1031 阅读 · 0 评论 -
协议圣经(一)
1、网络七层协议这里不讲解多余的东西,对于程序员来讲,最重要的就是传输层和应用层物理层的概念是原始比特流也就是0和1. Ethernet V.2 和IEEE 802.2 电气特性物理层:网卡,网线,集线器,中继器,调制解调器数据链路层:网桥,交换机,实际上网桥也是一个交换机,只不过看起来是一进一出。当然交换机也有三层交换机,也就是带路由功能。交换机拥有一条很高带宽的背部总线和内部交换矩阵。记住这句话,存储转发。网络层:路由器记一下以上几个协议,比较有用网关工作在第四层传输层及其以上会话层(原创 2021-06-27 08:16:16 · 494 阅读 · 1 评论 -
opencv 智能答卷识别系统(二) 自动阅卷
智能识别答卷二这是一,可以参考 智能答卷识别系统一A 、根据条件去截取多个区域1、 姓名班级考场这一步可以使用文字识别来做,也可以去除,因为哪一张考卷是谁的,证件号码是可以识别的,这里是为了冗余而做。2、 证件号码3、 答案区域把这三个部分都识别出来,就好办了show me the main code主程序是通过试卷上面的标记来识别是哪一种试卷,然后分割出自己要的三部分区域,然后,重点,就是识别函数int main(int argc, char** argv){ #if 0原创 2021-06-23 20:53:19 · 1984 阅读 · 3 评论 -
opencv 智能答卷识别系统(一)
目标识别答卷答案,识别准号证号码,识别姓名识别试卷类别试卷是有标记的,如试卷上方的黑框,排序结构,使用c++的标准排序算法struct Ruley { bool operator()(const Rect &a1, const Rect &a2) { return (a1.y) < (a2.y); }};```c ```c void findpos(Mat img){ Mat gray,edge; cv::cvtColor(img, gray, COL原创 2021-06-14 18:13:35 · 994 阅读 · 1 评论 -
程序员的数学
这个文章是我多年前的文章,这里重新找到拿出来了我们需要数学的理由 程序员需不需要数学,几乎只要做过程序员的人都会低下头来想上一段时间才能回答,不要因为认为你必须足够酷而回答说我们需要,因为很多程序员可能不会用上,因为我们有足够多的组件、库和框架,平台等提供了很多方法,以至与我们和数学脱钩。在大学本科生和研究生教育的过程中,老师和导师不止一次地说过:“我们需要一个数学模型“(model)。因为发表论文有了一个数学模型则发表的可能性则多了5%(此数据不可靠:)原创 2021-06-10 20:41:49 · 1828 阅读 · 2 评论 -
rtsp视频解码-分析-转发http-flv ws-flv webrtc
说明因为该代码没有完全完成,所以完整代码没有放上来,如果需要,可以将email发送给我,我把代码发送给大家。但是最主要的关键部分已经贴出来了,图为接收rtspserver的视频,接收播放,分析,并转发flv。框架在完成以后,一种是调用c++的opencv直接分析,一种是调用python 去做,思考成熟以后,再决定。rtsp 解码使用live555 ,在一个线程中接收class c_rtspthread:public c_thread{ int v_headlen = 0; c_rtsp原创 2021-05-23 17:45:57 · 3846 阅读 · 11 评论 -
opencv的一些滤镜效果
第一种老照片风格可以直接看到效果#include <algorithm>#include <functional>#include <array>#include <iostream>#include <iostream>#include<opencv2/opencv.hpp>#ifdef _DEBUG#pragma comment(lib,"opencv_world440d.lib")#else#prag原创 2021-04-23 21:58:43 · 374 阅读 · 0 评论 -
检测直线方法 python
霍夫直线检测import cv2 as cvimport numpy as npimg = cv.imread('1.png')def line_detection(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # apertureSize做Canny时梯度窗口的大小 edges = cv.Canny(gray, 50, 150, apertureSize=3) # 返回的是r和theta lin原创 2021-04-16 07:12:56 · 4208 阅读 · 0 评论 -
opencv 一种灰度图像增强方式
opencv 取灰度图颜色范围有时候需要取opencv的灰度图颜色范围int main(){ cv::Mat src = cv::imread("lines.jpg", 1); cvtColor(src, g_gray, COLOR_BGR2GRAY); //cv::calcHist() g_dst.create(g_gray.size(), CV_8U); ImageStretchByHistogram(g_gray, g_dst); cv::imshow("gray", g_gra原创 2021-03-20 15:28:30 · 2455 阅读 · 1 评论 -
rtsp 协议读取视频进行分析并返回结果到websocket server
一、rtsp 协议读取视频1.1读取方法ffmpeg这种方法和opencv是一样的,因为opencv使用的就是ffmpeg,结果不是很好,断线重连不是很好做,有一个好处是不用引入其他库,ffmpeg也用来解码之用。1.2 live555速度快,断线重连比较方便,摄像头像海康大华等等时间长了会自动重启内部服务,这时候涉及断线重连。这里使用这种方式。1.3 自己写接收代码理解rtsp协议之后使用udp服务接收帧,这种好处是完全控制协议和数据,最大的灵活性,但是也带来代码调试量增多的问题。二、基础算原创 2021-03-18 21:47:08 · 1340 阅读 · 0 评论 -
数据分析工具
介绍数据分析工具1 scipy 向量,物理 傅里叶 矩阵计算scipy.cluster 向量计算/Kmeansscipy.constants 物理和数学常量scipy.fftpack 傅立叶变换scipy.integrate 积分程序scipy.interpolate 插值scipy.io 数据输入输出scipy.linalg 线性代数程序scipy.ndimage n维图像包scipy.odr 正交距离回归scipy.optimize 优原创 2021-03-20 19:58:28 · 202 阅读 · 0 评论 -
tensorflow线性回归基础函数
以下先使用tensorflow 的矩阵乘积,注意不是内积,然后使用基础函数求平方 、平方和、均值,这是使用tensorflow 使用线性回归分析的基础,基础好了,才能走出下一步,要不然怎么数据分析呢,更不要说识别了import tensorflow as tfX = tf.constant([[1., 2.], [3., 4.]])y = tf.constant([[1.], [2.]])w = tf.Variable(initial_value=[[1.], [2.]])b = tf.Varia原创 2021-03-06 11:10:20 · 288 阅读 · 1 评论 -
tensorflow,Anaconda和 vscode 如何连接以及问题解决
主要是为了解决安装tensorflow的问题,tensorflow新版本已经不分gpu和cpu版本了,不需要再独立安装cpu,gpu版本,安装运行的时候自动查找是否有gpu,这个确实已经非常厉害了,能在Anaconda的环境下,再使用vscode,这个更方便,因为你写完java,写个go,再写个python,只要在vscode里面运行就行,多方便。Anaconda安装完了以后可以使用来创建自己的环境:创建环境conda create name查看自己有多少个环境conda list下载非常原创 2021-02-24 07:24:12 · 816 阅读 · 0 评论