![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习记录
文章平均质量分 55
stupid_miao
学生,学习计算机视觉中...
展开
-
Linux C++ thread绑定CPU
参考加入以下语句: cpu_set_t mask; CPU_ZERO(&mask); CPU_SET(1, &mask); ////////指定该线程使用的CPU if (pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) < 0) { perror("pthread_setaffinity_np");例子:#include <stdio.h原创 2021-07-26 01:11:48 · 633 阅读 · 1 评论 -
Windows10安装TensorRT及环境配置
环境安装:参考nvidia驱动下载直接运行"466.47-desktop-win10-64bit-international-dch-whql"文件安装就好,开始让你选择临时解压路径,然后可以自定义选择安装路径。cuda10.2(或其他),下载cuda与显卡驱动匹配安装:(1) 运行软件“cuda_10.2.89_441.22_win10”,开始让你选择临时解压路径,然后可以自定义各个组件(dev、doc、samples)选择安装路径。(2)安装完成后打开cmd,输入nvcc -原创 2021-05-27 12:38:19 · 2624 阅读 · 0 评论 -
图像JPEG编解码
JPEG数据解码如何得到YUV420数据?简单方法:用opencv进行转换img = cv2.cvtColor(img , cv2.COLOR_BGR2YUV_I420) 其他方法,包括硬件解码(如nvidia jetson multimedia api )、libjpeg、ffmpeg等库。如何得到JPEG数据? 可以采用读取图像后进行yuv420转换(opencv cvtColor函数),再利用libjpeg或硬件进行编码操作,nvidia jetson multimedia ap原创 2021-05-26 14:07:50 · 1192 阅读 · 1 评论 -
图像处理(一)相关与卷积操作
相关与卷积操作都是 “乘积的和” 作为当前元素的值,但区别是卷积先要将模板旋转180°。相关运算的本质目的是我们想了解事物基本组成的相似程度。而非互相影响。具体的运算有:自相关(Auto-correlation)看自身组成的是否相互重复互相关(Cross-correlation)看两者之间组成的相似程度卷积运算,反映了事物的相互作用,并且这种相互作用受制于同一个影响因子参考相关计算:卷积计算(将核旋转180°然后就和相关计算一样了):MOSSE算法所以目标模板求取:即原创 2021-04-12 16:49:36 · 2477 阅读 · 0 评论 -
yolov5模型转TensorRT踩坑记录
问题1:找不到tensorRT,报错找不到 NvInfer.h解决:如果tensorRT为下载解压安装的,需要修改CMakeLists.txt:# tensorrtinclude_directories(/home/jiang/TensorRT-7.0.0.11/include)link_directories(/home/jiang/TensorRT-7.0.0.11/lib)问题2:报错:/home/jiang/TensorRT-7.0.0.11/include/NvInfer.h:原创 2021-01-26 13:31:58 · 4031 阅读 · 11 评论 -
PyTorch学习记录(1) : 基本科学计算
PyTorch学习1、基本操作import numpy as npimport torchobj = torch.Tensor(3,4)#1.判断是否是Tensortorch.is_tensor(obj) # isinstance(obj,torch.Tensor)#2.全局设置Tensor类型torch.set_default_tensor_type(torch.DoubleTensor) #torch.Tensor(2).dtype : torch.float64#3.获取Tens原创 2020-12-15 20:46:12 · 791 阅读 · 0 评论 -
CNN学习记录
基本结构1. 卷积层参考:卷积神经网络(CNN)综述卷积操作,N——输出大小,k——卷积核,P——Padding像素值,s——步长k通常是奇数,一方面可以保证使用 Same 填充时填充像素数P是整数,对原图片的填充是对称的;另一方面奇数宽度的卷积核具有一个中心像素点,可以表示卷积核的位置。x = torch.randn(size = (1,1,100,100))conv1 = nn.Conv2d(1, 20, kernel_size=3,stride=1, padding=1)pri原创 2020-12-10 22:15:14 · 638 阅读 · 0 评论 -
UDP通信传输图像、数据(基于python-socket)
先记录一个能实现的,基于base64进行编码传输;但由于编解码大于传输整张图像的时间,所以准备直接传输。不编码直接传输: 直接可以 s.sendto(np_array,addr) ,对方接收的为bytes; 采用 a = np.frombuffer(datas,dtype=np.uint8,offset=0),第三个参数表示舍弃前offset个; 注意:需要设置np.set_printoptions(threshold=1e10),不然大的array转str的时候会直接省略号;原创 2020-11-17 21:11:14 · 2353 阅读 · 2 评论 -
图像处理——空间域(FFT)频域
首先,收藏一个讲的比较好的帖子目的:需要向图像增加额外的相位干扰,使图像模糊;类似于高斯模糊之类的做法:图像傅里叶变换到频域单波长激光传播到的远场图像作为滤波器,归一到0-1;注意:如果影响极小,也就是远场是一个光斑,那么就再叠加就不行了,这里就舍弃这个滤波器频域与滤波器相乘(类似低通:滤掉中心区域外高频的点,空间域中图像就模糊了)傅里叶逆变换还原做法:在第二部归一化时加上一个极小值使不为0,然后之后还原就直接将模糊图像进行傅里叶变换,频域除以滤波器就好了。实现:class ImgF原创 2020-11-17 20:48:49 · 2653 阅读 · 0 评论 -
pytorch训练,gpu利用率不稳定
问题描述:单主机四gpu利用torch.nn.DataParallel进行多gpu的训练;gpu的内存占有率没问题,但使用率很低,很长一段时间在百分之零。问题原因:读取每个batch size的图像时,cpu读取时间较长。(batch_size = 1024, 设置DataLoader线程4、8、16、32的改善都不大,且pin_memory=true),开始的dataset为下面方式,显然每次读取时io的耗时比较长。于是,将图像全部读出(硬件支持…),然后再进行每次的变量赋值。class myDa原创 2020-09-10 20:30:17 · 5774 阅读 · 2 评论 -
numpy、pytorch记录
1、expand函数2、expand_as函数>>> import torch>>> a = torch.tensor([[2],[3],[4]])>>> a_size = a.size()>>> b = torch.tensor([[0,0],[10,10],[100,100]])>>> b_size = b.size()>>> print(a,a_size, ' \n',b,b原创 2020-09-02 18:53:15 · 91 阅读 · 0 评论 -
( Tencent -TNN 学习)pytorch模型部署到移动端
记录分为pytorch2onnxonnx2tnntnn结果验证移动端(安卓)使用1、pytorch2onnx环境:pytorch 1.4.0onnx 1.6.0 (转换)onnxruntime 1.3.0 (测试)onnx-simplifier 0.2.9 (模型量化,不执行后续报错了,我测原创 2020-07-03 15:32:54 · 5143 阅读 · 1 评论 -
基于Dijkstra算法的景点路径规划(高德api)
这是网络优化课程最后的课程报告,利用Dijkstra算法对已知节点进行最短路径规划。开发环境:ubuntu16python3.6——pyqt5、opencv-pyhton、urllib、requests首先,进入高德地图开放平台,创建应用。选用的是高德地图开发平台的web服务API,可使用的服务如图一,而本文需要静态地图API进行地图图片的显示、搜索服务-关键字查询进行地点坐标(经纬度)的查询、行驶距离测量进行两地点驾车距离的运算。然后进行计算图的Dijkstra算法应用,最后进行可视化。增原创 2020-06-04 17:33:18 · 4145 阅读 · 10 评论 -
opencv处理图像延迟高(解决cap.read缓存\不实时问题)
问题描述:最近做直播系统,利用opencv进行图像采集处理,直播推出去的流发现延迟高且会累积延迟.后面发现是opencv的cap.read()会有一定的缓存,不是读的实时帧.解决办法:多进程进行(python多线程不能利用多核,所以处理线程占用高的时候,读取线程会被阻塞)一个进程进行处理,一个进程进行读取.直接用 Queue列队进行通信.参考文章读取端进行put,但put之前先判断有多...原创 2020-03-16 16:07:40 · 16978 阅读 · 6 评论 -
nginx搭建rtmp流服务器并opencv等处理后(音频、视频)实时推出
一、流服务器搭建1、安装**参考文章sudo apt-get install software-properties-common python-software-propertiessudo add-apt-repository ppa:nginx/stablesudo apt-get updatesudo apt-get install nginxsudo apt-get inst...原创 2020-03-03 13:21:54 · 1857 阅读 · 6 评论 -
python2\3区别记录
1、python2 list、tuple不存在 *a/**a写法例子python3:a = [1,2,3]b = [5,6,7]k = [*a,*b] = [1,2,3,4,5,6]j = [a,*b] = [[1,2,3],4,5,6]python2k = a + b = [1,2,3,4,5,6]j = [a]+b = [[1,2,3],4,5,6]...原创 2020-01-08 14:33:23 · 133 阅读 · 0 评论 -
利用主成分分析(PCA)、线性判别分析(LDA)、KPCA、Isomap、LLE、Laplacian Eigenmaps将数据投影到两维
机器学习上机题目:给定一组3维数据,分别利用主成分分析(PCA)、线性判别分析(LDA)、KPCA、Isomap、LLE、Laplacian Eigenmaps投影到两维,并画出结果图。(注意:swiss-data.txt的第一维是类别标号,共3类,仅为LDA用。)实现(调用python的sklearn):# -*-coding:utf-8'''给定一组3维数据,分别利用主成分分析(PC...原创 2019-11-12 23:28:09 · 1345 阅读 · 0 评论 -
(特征匹配)SurfFeatureDetector类的改变【opencv2.4.10——>opencv3.4.4】
**opencv3.4.4//opencv2.4.10**//增加头文件#include<opencv2/core/core.hpp>#include<opencv2/xfeatures2d/nonfree.hpp> //提取特征点 cv::Ptr<cv::xfeatures2d::SurfFeatureDetector> surfDete...原创 2019-05-23 14:11:40 · 1717 阅读 · 0 评论 -
Opencv学习记录【六】——图像透视变换
接上一篇,现在需要绕两中轴旋转,并且给定角度旋转。思路:运用几何关系通过角度算出四点变换;再运用opencv四点得出3*3矩阵;最后运用透视变换函数进行变换。下面视图为手稿:...原创 2018-12-27 17:33:29 · 1119 阅读 · 0 评论 -
8-15(keras yolov3训练自己的样本)
The test environment is- Python 2.7- Keras 2.2.4- tensorflow 1.10.0下载keras-yolov3 https://github.com/qqwweee/keras-yolo3根据其readme,我们来研究train.py不管那些参数及训练代码,先找其样本相关的处理:17样本描述文件annotation_pa...原创 2019-08-15 17:32:41 · 543 阅读 · 0 评论 -
8-5(face_recognition源码解读)
1、face_recognition 人脸识别学习检测人脸:face_locations = face_recognition.face_locations(frame)返回值 (top,bottom,right,left)人脸检测,可用opencv替换:优势:pc端速度提高了一倍,树莓派上提高了接近九倍(520ms - 67ms) #opencv的人脸检测 def d...原创 2019-08-05 11:57:04 · 2380 阅读 · 0 评论 -
keras 神经网络层学习(7-22)
1、keras Conv2D详解(参考)二维卷积层,即对图像的空域卷积。该层对二维输入进行滑动窗卷积,当使用该层作为第一层时,应提供input_shape参数。例如input_shape = (128,128,3)代表128*128的彩色RGB图像(data_format=‘channels_last’)keras.layers.convolutional.Conv2D(filters, ...原创 2019-07-22 12:01:11 · 770 阅读 · 0 评论 -
opencv学习记录(一)——训练&分类方法(Adaboost、svm)
一、Adaboost1、准备工作: 建立训练样本库 正样本:行人图像,需统一尺寸 负样本:不包含行人影像的任意图像,不需统一尺寸2、Training主要步驟: 载入训练样本 初始化样本权重 截取训练样本的Haar feature...原创 2018-11-02 17:30:54 · 2156 阅读 · 0 评论 -
Opencv学习记录(二)——鼠标响应操作,显示像素点信息
最近在做一个基于opencv的目标跟踪的项目,用到了图像一些通道的阈值处理,于是就写了一个输入图像路径,输入通道命令,再用鼠标点击即在图像上显示该像素的信息(坐标+像素值)。说明:终端输入图像路径,输入要转换的通道,左键点击显示该像素的信息,右键清除。用到的opencv工具函数:1、鼠标响应函数cv::setMouseCallback(windowname, on_mouse...原创 2018-11-21 14:28:34 · 1542 阅读 · 1 评论 -
Opencv学习记录(三) —— 得到图像中目标物坐标的简单处理算法(望指正与补充)
先描述一下使用场景:我要识别一个红灯,已经把目标准确的提取出来了,二值图像中白色为目标物,现在要算出二值图中的白色像素点的坐标。因为之后需要移植到树莓派,所以需要高效的方法。 需要找出白色中心点 第一想到的肯定就是for for 了,然而效率太低,320*240迭代下来花费10ms。优点效果好,稳定在目标物的中心。 优化的方法...原创 2018-11-23 17:07:42 · 18417 阅读 · 3 评论 -
Opencv学习记录(四)——基于Python(pil、imageio)、Opencv处理 GIF图片
**加粗样式**1. 使用python pil库进行gif图片的分成静态图片格式注意:不支持生成 jpg、jpeg格式;支持生成bmp、png,推荐**png**格式,因为后面使用 **imageio**库进行生成 gif格式时仅支持 png格式。![一共生成了167帧,我们只需要处理有文字的帧](https://img-blog.csdnimg.cn/20181126201943738...原创 2018-11-26 20:37:04 · 5181 阅读 · 0 评论 -
Opencv学习记录(五)——图像仿射变换
一、opencv仿射与旋转原理仿射变换矩阵求取warp_x = getAffineTransform( srcTri, dstX ) // 设置源图像和目标图像上的三组点以计算仿射变换 srcTri[0] = cv::Point2f( 0.0,0.0 ); srcTri[1] = cv::Point2f( src.cols - 1, 0.0 ); srcTr...原创 2018-12-11 14:50:59 · 965 阅读 · 0 评论 -
Opencv学习记录【七】——人脸贴图处理
先上上效果图:然后理一下用到的opencv知识:带人脸的图像预处理,灰度化就够了,缩小一下增加帧率;opencv的haar特征分类器;face_cascade.detectMultiScale(image_face, faceRect, 1.2, 2, 0 | CV_HAAR_SCALE_IMAGE, cv::Size(30, 30));同1得出眼部区域,opencv的神经网络a...原创 2019-03-15 17:04:00 · 3654 阅读 · 3 评论 -
c++ opencv 脸部样本提取并保存
**这是一个打开摄像头录入人脸并保存在指定文件夹的小demo。使用方法:**./Get_faceSamples [dirname/] [samples_number]**C++ code**/************************************************************************* > File Name: Ge...原创 2019-03-15 17:26:00 · 1544 阅读 · 3 评论 -
Opencv学习记录【九】———芯片字符分割、车牌字符分割
车牌识别算法流程1、分类器(adboost方法)得到含有车牌的rect(或传统的找轮廓方法)2、颜色阈值,筛选出正确的车牌区域3、直方图统计,精确定位字符区域4、字符分割5、字符识别本文记录基于直方图统计进行芯片字符分割和车牌字符分割,两种场景不同但方法相似。...原创 2019-04-16 17:22:25 · 2013 阅读 · 0 评论 -
Opencv学习记录【八】——目标跟踪与adboost检测+对比
无论是人脸检测类还是自己训练分类器来识别物体,opencv的adboost(linux 下opencv的adboost使用方法)都为我们提供了便捷快速的接口。但对于长时间的检测或每帧都要进行处理来说,opencv还为我们提供了更加快速稳定的跟踪算法。这次记录的是利用opencv的人脸检测与其跟踪算法做对比,在检测目标运动不是很快的情况下,跟踪算法在稳定性和运行速度上都更胜一筹。下面运用人脸检测第...原创 2019-04-15 12:01:46 · 696 阅读 · 0 评论 -
Opencv学习记录【十】——神经网络MLP(多层感知机)
opencv为我们提供了多种机器学习方法,比如adaboost、svm、神经网络等。本文主要记录其神经网络的原理和用法(参考赵春江的“机器学习经典算法剖析基于opencv”,人民邮电出版社,214-220)下面就以照片的方式贴出其原理:如何利用opencv的神经网络api呢,很简单,可以看其官网或者按照下面的例子进行实践。这个例子是人脸贴图利用opencv神经网络对脸部区域的位置和脸部器官...原创 2019-05-09 12:07:47 · 2473 阅读 · 0 评论 -
文件操作:c++、python
要进行训练,那样本的读取和分类就是需要搞定的了。这篇文字主要记录c++、python的文件操作,包含文件夹的遍历、文件的读取判断等。不定期更新。5.9:c++如何进行文件夹的遍历看了一些文章,说包含 io.h 就能进行相关操作了,可是我ubuntu怎么都找不到 io.h。于是想了一个办法,我要进行人脸识别,每次录入样本后会单独存在一个文件夹里,然后训练之前要生成样本的描述文件。我是这样解决...原创 2019-05-09 13:33:11 · 145 阅读 · 0 评论 -
Opencv学习记录【十一】——opencv3安装以及对比opencv2相关模块修改记录
opencv3对比opencv2的一些可移植api的不同1. 特征点检测 SurfFeatureDetectorubuntu18.04安装opencv3参考1. 卸载以前的opencvcd /home/hy/opencv/buildmake uninstallsudo rm -r buildsudo rm -r /usr/local/include/opencv2 /usr/lo...原创 2019-05-23 12:00:27 · 150 阅读 · 0 评论 -
人脸识别FaceRecognizer类的改变【opencv2.4.10——>opencv3.4.4】
opencv2.4.10 FaceRecognizer的创建:#include <opencv2/opencv.hpp>using namespace cv;Ptr<FaceRecognizer> model = createLBPHFaceRecognizer();模型功能://下载model->load(filepath);model->p...原创 2019-05-23 13:26:58 · 1794 阅读 · 0 评论 -
神经网络ml-ANN的改变【opencv2.4.10——>opencv3.4.4】
opencv2.4.10神经网络api的使用:#include <opencv2/ml/ml.hpp> //创建:CvANN_MLP bp; //下载bp.load("test.xml")//预测bp.predict(in,out)/*定义神经网络及参数*/ CvANN_MLP bp; //bp网络 CvANN_MLP_TrainParams params...原创 2019-05-27 18:02:09 · 648 阅读 · 0 评论 -
ubuntu安装artoolkit
第一个坑ubuntu18.04不能利用apt安装libgstreamer0.10-dev;ubuntu下使用的v4l2,而artoolkit使用的啥v4l1,所以不能直接使用videolinux,需要使用gstreamer。第二个坑ubuntu16.04按照教程参考进行运行是,报错:(videoTest:14443): GStreamer-CRITICAL **: gst_pad_ge...原创 2019-06-25 17:29:21 · 403 阅读 · 1 评论 -
7-23(数据结构与算法学习1)
学习数据结构与算法,第一课如下,采用递归方式实现从N打印到0,如果N无限大,将内存爆炸。(每次都要调用PrintN所以每次都得给它分配内存)对于实现如下幂指数累加,有一下两种实现方式。但记住,加减运行时间远小于乘除,所以避免幂运算、阶级运算等。考虑复杂度进行算法设计时,尽量避免平方以上的运算,平方转为nlogn。...原创 2019-07-23 16:14:22 · 174 阅读 · 0 评论 -
7-24(linux dlib c++初识)
环境准备:官网Download解压缩:tar -xjf dlib-19.17.tar.bz2编译dlib:进入~/dlib-19.17 下mkdir buildcd buildcmake …make release=1编译例程:进入~/dlib-19.17$ 下cd examples #进入dlib下的examples文件夹mkdir build #新建bu...原创 2019-07-24 12:30:24 · 184 阅读 · 0 评论 -
关于STM32的DMA-ADC与DMA-串口发送的使用(hal库)
刚用了一下hal库的DMA-ADC和DMA-USART,遇到了一些问题,记录一下。没有深层次的了解相关外设寄存器层面的操作,待了解后再回过头看看。1、DMA_ADC 根据cube生成后只需要调用: HAL_ADC_Start_DMA(&hadc1, 转换得到的数组名, 转换的通道数); 如果要确保转换完成,调用转换完成回调函数:void HAL_ADC_ConvCpltCallbac...原创 2018-05-03 21:09:08 · 9512 阅读 · 3 评论