计算机视觉
awhuter
学习;分享;进步
展开
-
OpenCV访问元素的几种方式.at<>(), .ptr<>(), .data,并测试了各自的速度
OpenCV访问元素的几种方法原创 2023-04-06 12:48:25 · 976 阅读 · 0 评论 -
OpenCV矩阵元素类型.type()及其访问方式.at<>()
OpenCV,.type()元素类型查表,及.at()访问类型原创 2023-04-06 11:47:36 · 797 阅读 · 0 评论 -
用OpenCV进行相机标定(张正友标定,有代码)
目录1. 内参与畸变2. 用OpenCV标定相机程序3.画棋盘标定板4.OpenCV拍照1. 内参与畸变理论部分可以参考其他博客或者视觉slam十四讲相机标定主要是为了获得相机的内参矩阵K和畸变参数内参矩阵K畸变系数:径向畸变(k1,k2,k3), 切向畸变(p1,p2)径向畸变公式切向畸变公式张正友标定方法能够提供一个比较好的初始解,用于后序的最优化.这里用棋盘格进行标定,如果能够处理圆的偏心误差问题,用圆形图案标定板可能效果更好.至少三张图片,一般用10-20张图片为最佳,要保证相原创 2022-05-23 15:56:30 · 15359 阅读 · 20 评论 -
用OpenCV计算图像的亚像素值
原理如图:float subPixelValue(cv::Mat &img, float x, float y){ // boundary check if (x < 0) x = 0; if (y < 0) y = 0; if (x >= img.cols - 1) x = img.cols - 1 - 0.001; if (y > img.rows - 1) y原创 2022-04-19 13:50:56 · 5172 阅读 · 0 评论 -
D435i标定
方法1,标定包camera_calibration//安装包rosdep install camera_calibration//启动相机roslaunch realsense2_camera rs_camera.launchrostopic list//发现发布的话题名为/camera/color/camera_info/camera/color/image_raw打印棋盘格:链接执行指令rosrun camera_calibration cameracalibrator.p..原创 2022-04-08 21:18:53 · 1089 阅读 · 1 评论 -
三角测量,用Opencv计算获得两图片匹配点的深度
函数cv::triangulatePoints(T1, T2, points1, points2, points_4d);输入:T1: 3*4的cv::Mat ,就是第一张图片的 R和t组合一起的T2: 3*4的cv::Mat ,就是第二张图片的 R和t组合一起的points1: vector<cv::Point2f> 前一张图片的匹配点points2: vector<cv::Point2f> 后一张图片的匹配点,肯定和上一个size()一样输出:points_..原创 2022-04-01 14:05:33 · 5085 阅读 · 1 评论 -
根据特征匹配关系,用OpenCV计算基础矩阵F, 本质矩阵E,旋转矩阵R,平移向量t
计算Fcv::Mat F = cv::findFundamentalMat(vector<cv::Point2f>& points1, vector<cv::Point2f>& points2, int method, ... ); 计算Ecv::Mat E = cv::findEssentialMet(points1, points2, K);..原创 2022-04-01 10:57:42 · 5947 阅读 · 0 评论 -
手写ORB特征提取 +暴力匹配
1、提取FAST关键2、计算关键点的方向,计算关键点描述子,描述子用的是8个32位uint32_t,也就刚好有256位3、暴力匹配#include<iostream>#include<opencv2/opencv.hpp>#include<cmath>#include<chrono>#include<vector>using namespace std;int ORB_pattern[256 * 4] = { 8, .原创 2022-03-31 14:31:35 · 4648 阅读 · 0 评论 -
使用OpenCV给图像去畸变
相机畸变模型我们计算畸变都是在归一化平面上进行的,下面的(x,y), (x_distort,y_distort)都是在归一化坐标,相机坐标(X,Y,Z)的归一化坐标(X/Z, Y/Z, 1)1、径向畸变由透镜形状引起的,畸变系数k1, k2, k3,畸变模型:2、切向畸变由镜片安装和成像平面不平行引起的,畸变系数p1, p2,切向畸变模型:3、总的畸变模型求解思路我们得到的原图是畸变后的图像(x_distort,y_distort),要计算畸变之前的真实图像(x,y),不是..原创 2022-03-28 10:47:05 · 5674 阅读 · 6 评论 -
opencv3+opencv3_contrib实现SIFT,SURF,ORB三种特征点的提取和匹配
SIFT#include <iostream>#include <string>#include <opencv2/opencv.hpp>#include <opencv2/xfeatures2d.hpp>#include <cstdlib>bool siftPointsDetect(std::string imgName1, std::string imgName2, int pointNum);int main(int a..原创 2021-12-27 15:57:30 · 1963 阅读 · 0 评论 -
ubuntu装caffe-segnet-cudnn5过程
查看显卡型号lspci | grep -i nvidia查看合适的驱动版本ubuntu-drivers devices我的推荐版本是recommend : nvidia-driver-470装推荐版本的驱动sudo ubuntu-drivers autoinstall查看系统内核版本uname -r默认驱动安装位置/usr/src/nvidia-470.86nvidia-smi查看驱动版本,和最高支持CUDA版本(不是装的版本)如果显示NVIDI..原创 2021-12-27 10:32:17 · 527 阅读 · 0 评论 -
OpenCV基本数据类型:Vec,Point,Rect,Scalar,Size,Matx,Mat等
cv::Vec<>cv::Vec<>是固定向量类,不同与STL的vector是动态向量,更像是STL的array,长度固定;如cv::Vec<int,6> ivec6;有已经内置的别名:cv::Vec{2,3,4,6}{b,w,s,i,f,d}cv::Vec{2,3,4,6}{b,w,s,i,f,d}//内置的类型重命名:typedef Vec<uchar,3> Vec3b//b unsigned char 常用//i int 常用..原创 2021-12-22 18:13:00 · 4113 阅读 · 0 评论 -
深入理解卷积神经网络(CNN)
强烈推荐1、YJango的卷积神经网络——介绍(知乎)2、大话卷积神经网络CNN卷积层卷积核(kernel),尺寸f*f,深度d,如第一个卷积层的深度和图片通道数一样,三通道为3;往后的卷积层,尺寸自定义,深度和上一层的特征图的深度(个数)一样。卷积输出的特征图尺寸(W, H):为(N-f+2P)/S+1N:待作卷积的尺寸(宽或高)f:卷积核尺寸P:边界填充(单边)的层数S:卷积核移动步长有几个卷积核,就会产生几个特征图,堆叠在一起,所以下一层的特征图深度等于卷积核的个数K.激转载 2021-11-29 19:57:42 · 204 阅读 · 0 评论 -
opencv上采样(变大),下采样(变小),高斯差分
下采样cv::pyDown(src,output,cv::Size(src.clos/2,src.rows/2))上采样cv::pyrUp(src,output,cv::Size(src.clos*2,src.rows*2))#include <opencv2/opencv.hpp>#include <iostream>using namespace std;int main(int agrc, char** argv) { cv::Mat image_raw, .原创 2021-11-29 14:22:46 · 2747 阅读 · 0 评论 -
opencv自定义个卷积核,filter2D做滤波
#include<iostream>#include<opencv2/opencv.hpp>#include<ctime>#include<cstdlib>using namespace std;int main(int argc,char **argv){ cv::Size2i size(1280,600); //(宽度x,高度y) x,y cv::Mat create_image(size,CV_8UC3);原创 2021-11-29 12:37:22 · 2245 阅读 · 0 评论 -
OpenCV简单图像处理示例(cmake)
程序testOpenCV.cpp:读取图像,显示图像,滤波,降采样,存图像,读像素值#include<iostream>#include<opencv2/opencv.hpp>using namespace std;int main(int argc,char **argv){ if(argc==1) { cout<<"usage: ./testOpenCV <Image_Path>\n"; return 1; } cv::Ma..原创 2021-11-24 17:20:28 · 2399 阅读 · 0 评论 -
数字相机成像原理:灰度值、RGB值
数字相机的成像原理是使用包含很多像素的光电耦合器件来成像:当按下相机快门开始曝光到曝光结束,每个像素(想象成每一个小区域)开始收集光子,并转换成电信号,总的规律是收集的光子越多,电信号越强,生成的图像像素点也越亮。对于灰度图,量化的数值是0-255,只反映明暗程度,不能反映颜色。灰度图成像过程,每个像素只能计算接收到的光子的数目,却不能判断出每种 颜色的光的光子数目,也就无法得到彩色图像。想得到彩色图像,那么就需要滤镜来感应色彩信息,如拜耳滤镜(Bayer Filter)..原创 2021-10-26 19:25:44 · 3023 阅读 · 0 评论