OpenCV
文章平均质量分 50
opencv学习备忘笔记
Mr.Q
纸上得来终觉浅,绝知此事要躬行。 ---陆游
展开
-
pyclipper和ClipperLib操作多边型
(3) 添加现有clipper头文件和源码 clipper.cpp和clipper.hpp。参数MiterLimit=10是尖角(左图),默认值是2,圆角(右图)(2)vs2019配置clipper环境,只需要添加包含目录即可。MiterLimit默认2圆角(左图),10尖角 (右图)(1)这里使用旧版clipper,下载后解压。原创 2023-11-16 11:10:54 · 1044 阅读 · 0 评论 -
ubuntu下简单编译opencv
视觉SLAM十四讲学习1 环境配置_视觉slam十四讲环境_RuiH.AI的博客-CSDN博客。开始编译前,先把anaconda关闭,我关闭的方式是,修改anaconda文件夹名称。编译安装opencv后,再改回来即可。可以看到opencv头文件安装路径是。原创 2023-06-27 15:13:08 · 945 阅读 · 0 评论 -
c++ 类似于numpy的操作汇总
【代码】opencv类似于numpy的操作汇总。原创 2022-09-13 14:09:32 · 1267 阅读 · 0 评论 -
win10 编译opencv4.5.0 (gpu版)
1. 背景正常官方推荐的exe安装,调用cv::dnn模块运行,超级慢,而且打印信息:setUpNet DNN module was not built with CUDA backend; switching to CPU即使加上加速代码,依然超级慢,跑512x512图像,分割网络需要1s,2080ti 7.5算力:this->loc_net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);this->loc_net.setP原创 2022-02-26 09:24:11 · 8641 阅读 · 21 评论 -
opencv 二值化图像-10
1. cv2.threshold(1)效果(2)代码import cv2 as cvfrom matplotlib import pyplot as pltimg = cv.imread('C:/Users/Administrator/Desktop/messi.png', cv.IMREAD_GRAYSCALE)rows, cols = img.shape# https://docs.opencv.org/master/d7/d4d/tutorial_py_threshold原创 2021-03-09 15:26:21 · 248 阅读 · 0 评论 -
opencv 缩放、平移、旋转、仿射变换和透视变换-08
1.效果图 2. 代码import numpy as npimport cv2 as cv"""https://docs.opencv.org/master/da/d6e/tutorial_py_geometric_transformations.html"""img = cv.imread('C:/Users/Administrator/Desktop/messi.png', cv.IMREAD_GRAYSCALE)rows, cols = img...原创 2021-03-09 13:45:27 · 465 阅读 · 1 评论 -
opencv 利用傅里叶变换获取低频和高频部分图像-07
1. 效果2. 代码# -*- coding: utf-8 -*-import cv2import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltdef filter_high_f(fshift, radius_ratio): """ 过滤掉除了中心区域外的高频信息 """ # 1, 生成圆形过滤器, 圆内值1, 其他部分为0的过滤器, 过滤 template原创 2021-02-24 09:09:13 · 7145 阅读 · 0 评论 -
opencv 求轮廓、外接矩形、凸包等-06
1. 求轮廓import cv2import numpy as npdef cal_contours(image, thresh_value=0, mode=cv2.RETR_TREE, method=cv2.CHAIN_APPROX_SIMPLE): """ :param image: 单通道图像, 8-bit or 32-bit floating point :param thresh_value: 二值化单通道图像 :param mode: Conto原创 2021-02-23 16:45:28 · 1319 阅读 · 2 评论 -
opencv canny算子-05
1. canny算法过程canny实现过程:1, 消除噪声:由于边缘检测容易受到噪声干扰,所以第一步就是用5x5的高斯平滑滤波;2, 求梯度:用Sobel算子求梯度;3, 非极大值抑制:对于图像中的每一个像素,检查像素在其梯度方向的是否是局部最大值,是则保留,不是则置为0,得到的结果是一幅带有“薄边”的二值图像;4, 滞后阈值:确定真正的边缘,这一步需要两个阈值:最大阈值和最小阈值。具体是,对于任何一个梯度值,如果大于最大阈值,则该位置一定是边缘;如果小于最小阈值,则一定不是边缘,设置为原创 2021-02-23 14:19:09 · 187 阅读 · 1 评论 -
opencv加法和和numpy加法的比较-04
1. 同都可以实现正常的加法操作。import numpy as npimport cv2a = np.array([1], np.uint8)b = np.array([2], np.uint8)cv2.add(a, b)array([[3]], dtype=uint8)a + barray([3], dtype=uint8)2. 异(1)超过当前数据类型所能表示的范围官方原话是OpenCV addition is a saturated operation whi原创 2021-02-07 16:52:14 · 924 阅读 · 0 评论 -
opencv gui之滑动窗口-03
1. 效果2. 代码#!/usr/bin/env python# -*- coding: utf-8 -*-# Created by zxq on 2021/2/7import cv2import numpy as npdef nothing(x): pass"""窗口名字是image,这个窗口里面有4个滑动条,分别是R,G,B,switch."""# 1, Create a black image, a windowimg = np.zeros((300原创 2021-02-07 15:26:08 · 321 阅读 · 0 评论 -
opencv gui之读取鼠标事件-02
1. 鼠标支持的事件import cv2 as cvevents = [i for i in dir(cv) if 'EVENT' in i]print(events)['EVENT_FLAG_ALTKEY', 'EVENT_FLAG_CTRLKEY', 'EVENT_FLAG_LBUTTON', 'EVENT_FLAG_MBUTTON', 'EVENT_FLAG_RBUTTON', 'EVENT_FLAG_SHIFTKEY', 'EVENT_LBUTTONDBLCLK', 'EVEN原创 2021-02-05 22:50:03 · 192 阅读 · 0 评论 -
opencv gui之常用的画图接口示例-01
1. 画图结果2. 代码# -*- coding: utf-8 -*-# @Time : 2021/1/31 下午4:36# @Author : zxq# @File : func.py# @Software: PyCharmimport numpy as npimport cv2 as cv# Create a black imageimg = np.zeros((512, 512, 3), np.uint8)# line# Draw a diagon原创 2021-02-05 21:30:47 · 170 阅读 · 0 评论 -
opencv之几何变换
周末闲来无事,总结下opencv几何变换操作。一、缩放cv2.resizeimport numpy as npimport cv2 as cvimg = cv.imread('messi5.jpg')res = cv.resize(img,None,fx=2, fy=2, interpolation = cv.INTER_CUBIC) # 放大一般有cv.INTER_CUBIC,缩小一般用 cv.INTER_AREA #ORheight, width = img.shape[:2]原创 2020-05-23 16:45:41 · 253 阅读 · 0 评论 -
访问图像像素的常见方式
#include <opencv2/opencv.hpp>#include <opencv2/core/core.hpp>#include <iostream>using namespace std;using namespace cv;int main(){//1,最快方式,利用 C[] Mat src = imread("D:/Code/im...原创 2018-04-12 21:36:57 · 424 阅读 · 0 评论 -
【图像处理知识复习】05基于灰度变换的伪彩色方法matlab,C++实现
算法:通过三个不同函数(这里是三个分段线性函数),将一个灰度值映射三个不同灰度值,分别保存在三个不同的矩阵中,再把三个矩阵的值分别赋值到一个新矩阵的三个通道中,这个新矩阵就是伪彩色图像矩阵,这样就由一张灰度图,得到一张伪彩色图片。三个映射函数如下:1. matlab代码:%题目:基于灰度变换的伪彩色方法%意义:将亮度低的映射为蓝色(冷色),亮度高的映射为红色(暖色)。%方法:分别用三个矩阵保存...原创 2018-05-09 18:02:59 · 10374 阅读 · 0 评论 -
【图像处理知识复习】06图像的平移和镜像的matlab,C++实现
一,平移先给效果,直观感受下,向右下角平移:1. matlab代码实现:%题目:图像平移%公式:I = i+△i; J = j+△j。clc;clear;f = rgb2gray(imread('D:\Code\Image\classic.jpg'));figure,imshow(f);%确定平移后画布[row,col] = size(f);move_i = 40;%移动垂直方...原创 2018-05-09 19:15:31 · 746 阅读 · 0 评论 -
【图像处理知识复习】07图像的旋转matlab,C++实现
先给出效果,直观感受下(会有空洞问题,紧跟的后面文章会解决):算法:分别用两个矩阵保存行、列号值,据公式(I = icost-jsint; J = isint+jcost。旋转角度t给定。),旋转行列号,新画布,填充。1. matlab实现:%题目:图像的旋转%公式;I = icost-jsint; J = isint+jcost。旋转角度t给定。f = imread('D:\Code\Im...原创 2018-05-10 10:48:26 · 331 阅读 · 0 评论 -
【图像处理知识复习】11高斯滤波(滤波,卷积)Matlab,C++实现
原理:当前像素值,是由周围像素值决定。通过模板内的值与图像卷积,模板内的值可以直接给定,值有下降的过程即可,也可以通过二维高斯函数生成,这里是通过二维高斯函数生成。效果如下: 二维高斯函数,定义一个和原图一样大小的高斯函数图像,sigmma取1,其中(x0, y0)是图像的中心:这个截取的模板大小为5x5,以(x0, y0)为中心截取:1. Matlab代码实现:...原创 2018-05-15 09:50:58 · 2064 阅读 · 0 评论 -
【图像处理知识复习】12Roberts交叉微分算子C++,Matlab实现
两个模板,分别提前不同的对角方向信息,该微分算法可以提提取目标的细节轮廓。效果如下:1. Matlab代码实现:%方法:2x2模板,当前像素f(i,j)在左上,g(i,j)=|f(i+1,j+1)-f(i,j)| + |f(i+1,j)-f(i,j+1)|%即模板是[-1 0;0 -1]和[0 -1;1 0],对角像素相减%%clc;clear;f = rgb2gray(imread('D...原创 2018-05-15 10:30:55 · 2489 阅读 · 0 评论 -
【图像处理知识复习】13 Sobel一阶微分算法 C++,Matlab实现
两个模板,分别求水平方向,和竖直方向的梯度信息。效果如下:1. Matlab实现:%一种奇数(3x3)模板下的全方向微分算子。%%clc;clear;f = rgb2gray(imread('D:/Code/Image/classic.jpg'));figure('name','原图'),imshow(f);f = double(f);[row,col] = size(f);%%...原创 2018-05-15 15:05:02 · 2248 阅读 · 0 评论 -
图片转成bin文件存储,及转回图片格式
原文链接点击打开链接没试过,暂存备忘 最近在项目中用到了图像字典,即需要一次性读入大量的图片数据作为参考(主要就是rgb三个维度的矩阵数据)。原本算法部分在matlab上做测试时,matlab的数据格式.mat支持大量数据的快速导入导出,但项目转移到opencv上时问题就出现了,opencv不能直接使用.mat文件。后来尝试了各种方法,包括.txt,还有opencv自带的.yml...转载 2018-04-14 19:54:41 · 20848 阅读 · 1 评论 -
window下opencv环境搭建
面试的时候好多公司都问熟不熟悉opencv,还是有必要重新认真学习下。环境配置:window10 +visual studio2013 + opencv3.1一、安装visual studio2013第一步,一定要先安装visual studio2013,详细教程参考:https://blog.csdn.net/qq_33742119/article/details/80075352...原创 2019-04-18 19:03:22 · 1758 阅读 · 0 评论 -
python读取文件夹中特定文件名的文件
import cv2import osdata_path = '/home/pi/bg/'img_list = os.listdir(data_path)save_path = '/home/pi/bg/'if not os.path.exists(save_path): os.mkdir(save_path)for i in range(0, len(img_list...原创 2019-07-02 08:21:32 · 12748 阅读 · 0 评论 -
python 找图像中的圆
一,动态自适应'''此方法是一种动态自适应找圆方法使用方法:im_floodfill = get_adaptive_circle(crop_img)输入原图crop_img返回mask'''import osimport cv2import numpy as np# 求最大连通域的中心点坐标# def centroid(max_contour):# m...原创 2019-08-01 13:13:16 · 5301 阅读 · 0 评论 -
opencv3 如何多通道图像分离,处理后,再合成多通道图像
所需函数:split + merge可直接运行的代码:#include <opencv2/opencv.hpp>#include <opencv2/core/core.hpp>#include <iostream>using namespace std;using namespace cv;int main(){ Mat src, srcOfMerge; Mat...原创 2018-04-12 20:27:28 · 3511 阅读 · 6 评论