opencv
文章平均质量分 51
落花逐流水
从事人工智能,模式识别与智能系统
展开
-
经典图割算法中图的构建及实现:Graph-Cut
讲解目前典型的3种图割算法:graph-cut、grab-but、one-cut。本文主要讲解graph-cut的方法在应用时,准则函数与图构建关系,如何构建图,以及如何代码实现图的构建。图割的原理网上文章和论文已介绍比较详细,不再详细介绍。该方法可谓是图割方法的开山鼻祖。该方法的准则函数如下:E(A)=λR(A)+B(A)E(A) = \lambda R(A) + B(A)E(A)=λR(A)+B(A)R(A)是先验惩罚项,B(A)是区域相似度惩罚项,λ\lambdaλ是平衡因子。该准则函数意义:同类间,原创 2022-11-10 15:48:59 · 2465 阅读 · 1 评论 -
opencv Mat格式转onnxruntime格式 c++
opencv Mat格式转onnxruntime格式 c++1、opencv cv::Mat转 onnx Tensor2、自己用过的 cv:Mat和 onnxruntime Tensor互转1、opencv cv::Mat转 onnx Tensor下面的代码假设使用3通道处理数据 (通常就是这样子的) resize_img.convertTo(resize_img, CV_32F, 1.0 / 255); //divided by 255 resize_img -= 0.5f原创 2022-02-21 10:26:02 · 1435 阅读 · 0 评论 -
使用sift特征、surf特征、orb特征及单应性矩阵定位物体
使用opencv4.5.2#include <opencv2/opencv.hpp>#include <vector>using namespace std;using namespace cv;int main(int argc, char* argv[]){ cv::Mat box = cv::imread("imgL.jpg"); cv::Mat scene = cv::imread("imgR.jpg"); // 创建SIFT特征提取 auto detec原创 2021-07-11 10:57:34 · 481 阅读 · 0 评论 -
sift、surf等特征提取测试程序
使用opencv4.5.2,因为sift专利到期,在opencv中可以直接使用,surf因为专利原因需要编译opencv-contrib才可以使用。1、使用sift特征提取关键点#include <opencv2/opencv.hpp>int main(){ cv::Mat imageL = cv::imread("imgL.jpg"); cv::Mat imageR = cv::imread("imgR.jpg"); //提取特征点方法 //SIFT cv::Ptr<原创 2021-07-11 09:23:11 · 303 阅读 · 1 评论 -
opencv4.5.2 + opecv contrib4.5.2编译
先下载opencv4.5.2和opencv4.5.2 contrib 源码参考只是简单看一下,毕竟我已经编译过n多次opencv了。之前一直编译的都是动态库,后来就习惯编译静态库了。注意事项:with-protobuf去掉,因为可能编译不过。WITH_SHARED_LIB, 去掉勾选,因为要编译静态库。勾选上 BUILD_opencv_world 因为不喜欢太多静态库。顺便再查看一下安装路径:CMAKE_INSTALL_PREFIX参考:OpenCV+opencv_contrib+VS20原创 2021-07-10 21:51:47 · 257 阅读 · 0 评论 -
opencv 图像转换
对于opencv图像,只有当图像通道数一样时才可以使用convertTo,转换数据类型。需要改变通道数的时候使用cvtColor。不能一步到位使用convertTo实现即转换数据类型,有转换通道数。dstmat.convertTo(dstmat, CV_8UC1, 255);cv::cvtColor(dstmat, dstmat, cv::COLOR_GRAY2BGR);当发现有问题时可以调试,输出各个属性就可以发现问题。如下:dstmat.convertTo(dstmat, CV_8UC1原创 2021-06-30 09:00:58 · 509 阅读 · 0 评论 -
opencv c++获取轮廓
1、查找和绘制轮廓findContours 会找到vector<vector<cv::Point>> contours;vector<Vec4i> hierarchy;f4 = Mat::zeros(frame.rows, frame.cols, CV_8UC3);f5 = Mat::zeros(frame.rows, frame.cols, CV_8UC3);findContours(f2, contours, hierarchy, RETR_TREE,原创 2021-06-27 12:51:57 · 5699 阅读 · 5 评论 -
opencv使用最小外接矩形和使用近似多边形 定位四边形
opencv使用最小外接矩形比较方便,但是不能紧包图像。使用近似多边形的方法可以实现紧包图像边界。因为使用分割模型去训练证件检测,检测出来后是mask,需要从mask中获取到四个顶点的坐标信息。以下是整个流程,包含推理和后处理,如果只需要后处理部分就从中摘取需要的部分。1、基于最小外接矩形的处理# -*- coding : UTF-8 -*-# @file : gen_bankcard_label.py# @Time : 2021/6/11 17:45# @Author : wmz原创 2021-06-17 16:20:06 · 1953 阅读 · 0 评论 -
opencv拟合多边形
用例:std::vector<std::vector<cv::Point>> contours;std::vector<cv::Vec4i> hierachy;cv::findContours(binary, contours, hierachy, cv::RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(-1,-1));std::vector<std::vector<cv::Point>> con.原创 2021-06-16 15:41:08 · 2153 阅读 · 0 评论 -
python opencv画一张图的最小外接矩形(二)
# -*- coding : UTF-8 -*-# @file : img_seg2line.py# @Time : 2021/6/10 18:14# @Author : wmz# coding=utf-8import cv2import numpy as npimport matplotlib.pyplot as pltimport osdef draw_bbox(img_path, result, color=(255, 0, 0), thickness=8):原创 2021-06-10 23:36:38 · 221 阅读 · 0 评论 -
opencv-python函数汇总
1、cv2.rectangle(img, pt1, pt2, color, thickness, lineType, shift )参数表示依次为: (图片,长方形框左上角坐标, 长方形框右下角坐标, 字体颜色,字体粗细)在图片img上画长方形,坐标原点是图片左上角,向右为x轴正方向,向下为y轴正方向。左上角(x,y),右下角(x,y) ,颜色(B,G,R), 线的粗细如:cv2.rectangle(frame, (int(bbox[0]), int(bbox[1])), (int(bb原创 2021-06-10 19:06:45 · 556 阅读 · 0 评论 -
python opencv画一张图的最小外接矩形
# -*- coding : UTF-8 -*-# @file : radon_line.py# @Time : 2021/6/7 22:15# @Author : wmzfrom scipy import ndimageimport numpy as npimport matplotlib.pyplot as pltimport imageioimport cv2import numpy as npimport osdef DiscreteRadonTransform(原创 2021-06-10 00:16:04 · 349 阅读 · 0 评论 -
conda 环境 cv2.imshow报错
报错如下:cv2.error: OpenCV(4.4.0) /tmp/pip-req-build-dglzv4yn/opencv/modules/highgui/src/window.cpp:651: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian原创 2021-06-07 22:49:56 · 960 阅读 · 0 评论 -
opencv 矩阵相乘
opencv 矩阵乘法1. dot说明:2. Mat矩阵mul——A.mul(B)3. opencv将整数像素图片转化为浮点型1. dot说明:1、 对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。2、dot方法声明中显示返回值是double,所以A.dot(B)结果是一个double类型数据,不是Mat矩阵,不能把A.dot(B)结 果赋值给Mat矩阵!dot操作不对参与运算的矩阵A、B的数据类型做要求,CV_8UC1、CV_32FC1等,原创 2021-06-03 22:20:40 · 3949 阅读 · 0 评论 -
opencv-python 将图片标注从原图扣出透视变换后保存
根据标注信息,将指定字段图片从原图中扣出并透视变换到正矩形。import cv2import numpy as npimport xml.dom.minidomimport osdef get_file_list(path, suffix): Filelist = [] for home, dirs, files in os.walk(path): for filename in files: if filename.endswit原创 2021-05-12 13:49:49 · 338 阅读 · 0 评论 -
opencv-python 读写中文路径问题
参考:opencv-python读写含中文的路径opencv-python常规读写图片的代码是(遇到中文路径会读写失败):import cv2image = cv2.imread('test.png', cv2.IMREAD_UNCHANGED)cv2.imwrite('save_test.png', image)可以支持中文路径的读写方式:import cv2image = cv2.imdecode(np.fromfile('中文图片.png'), cv2.IMREAD_UNC原创 2021-05-12 10:46:04 · 2011 阅读 · 2 评论 -
Opencv中的直线检测算法
opencv3中加入了LSD直线检测,然后在opencv4中因为Licence原因又去掉了LSD直线检测。除了LSD,opencv中还有其他直线检测算法。1、霍夫变换检测直线参考:OpenCv–霍夫直线变换(检测直线)2、LSD直线检测# coding=utf-8import cv2import numpy as np# 读取输入图片img0 = cv2.imread("test3.jpg")# 将彩色图片转换为灰度图片img = cv2.cvtColor(img0,cv2.COLO原创 2021-04-24 23:06:47 · 11367 阅读 · 0 评论 -
opencv调用caffe模型
我是用的是opencv4.1.1,加载的模型是bvlc_reference_caffenet.caffemodel,本来想找单独的猫狗分类模型的,结果没有找到,就用这个代替了,deploy.prototxt用的是caffe-windows\models\bvlc_alexnet\deploy.prototxt。 分别把这两个文件放到测试程序的model文件夹下,bvlc_reference_caffenet.caffemodel重命名成model.caffemodel。并找了一张猫的图片放到image文件原创 2021-04-11 10:23:21 · 1200 阅读 · 0 评论 -
安装opencv-python
阿里pypi镜像网址:添加链接描述使用阿里镜像安装python3对应的opencv包: 安装python3 使用阿里镜像安装opencv包:pip3 install -i https://mirrors.aliyun.com/pypi/simple opencv-python注:升级pip命令:pip install -i https://mirrors.aliyun.com/pypi/simple pip -U参考:通过阿里镜像安装opencv-python安...原创 2021-03-07 21:56:44 · 130 阅读 · 0 评论 -
cmake链接opencv静态库
CMakeLists.txt文件中添加OpenCV库依赖项# cmake needs this linecmake_minimum_required(VERSION 2.8) # Define project nameproject(opencvTest) # Find OpenCV, you may need to set OpenCV_DIR variable# to the absolute path to the directory containing OpenCVCon...原创 2021-03-03 22:45:22 · 2620 阅读 · 1 评论 -
MFC上鼠标选取ROI
先搜集,后整理。void CPicProcessDlg::OnLButtonDown(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 GetCursorPos(&sel_pos); GetDlgItem(IDC_Pic1)->GetWindowRect(&rect); if (rect.PtInRect(sel_pos)) { ClipCursor(&rect); rect_w.原创 2020-11-26 09:07:02 · 540 阅读 · 0 评论 -
OPENCV函数整理
随时补充1、opencv3中的glob函数读取文件夹中数据glob函数的用法用法:glob在opencv3下,并且命名空间为cv::glob()能够直接调用。但通过使用可以知道函数目的是将pattern路径下的所用文件名存进result中void cv::glob ( String pattern,std::vector< String > & result,bool recursive = false)默认recursive=false,即只能读取到指定文件原创 2020-11-25 14:07:21 · 972 阅读 · 0 评论 -
标注工具设计的一些想法
1、标注“任意四边形”或者“带角度的矩形框”同时满足这两个条件的还没有见到,yolo_mark只可以标注水平矩形框,labelImage大部分也只能标注水平矩形框,而且LabelImage大部分是python的是,使用起来不如c++的exe使用方便。2、画任意四边形原理:先画出矩形框,然后调整四个顶点(选中四个顶点中的某个顶点,原理:当鼠标落在某个顶点附近若干个像素就认为选中这个顶点了,就可以执行对这个顶点的一些操作)。3、选中四边形的原理:鼠标指针落到四边形内,单击事件触发选中操作。4、调整矩原创 2020-10-23 18:21:13 · 337 阅读 · 0 评论 -
opencv 笔记(一) 抠图
#include <iostream> #include <vector>#include <opencv2\opencv.hpp>#include <opencv2/highgui/highgui.hpp> #include <opencv2/core/core.hpp>#define CV_AA 16using namespace cv;static std::vector<std::vector<c...原创 2020-10-14 23:01:38 · 748 阅读 · 0 评论 -
opencv与mfc
有时为了简单的演示,经常需要使用到mfc和opencv。现在就记录一下二者一起使用。一,先打开VS2015,建立一个MFC工程,名字为opencv_mfc,选择对话框类型,其余按默认操作来就行。##例如对Button按键和显示图片控件进行显示一张图像操作:然后打开资源视图的对话框栏,在对话框中添加控件。把原来的默认的两个按钮都删了,添加一个图片Control,ID为IDC_PIC,再添加一个按钮控件,ID为IDC_BTN_OPEN,标题为“打开图片”完成以上步骤得下图:二,切换到解决方案原创 2020-09-30 16:50:21 · 3376 阅读 · 0 评论 -
yolo_mark工具的使用
之前自己编译了一下yolo_mark用来标注样本。我编译时yolo_mark依赖了opencv3.2.0。当时为了方便直接把yolo_mark.exe放到编译yolo的文件夹。现在要在其他地方使用,就把所有文件整理出来。其中opencv_world320.dll是官网下载的,自己编译yolo_mark.exe链接的是哪个就用哪个opencv动态库。yolo_mark.cmd里面是执行的命令,使用.cmd文件执行可以避免每次执行时敲很多命令,用.bat文件原理类似。yolo_mark.cmd里原创 2020-09-23 10:45:42 · 1073 阅读 · 2 评论 -
LInux下多个opencv版本
多版本OpenCV切换打开~/.bashrc$ gedit ~/.bashrc在文件末尾增加以下内容export PKG_CONFIG_PATH=~/opencv-3.4.1/build/installed/lib/pkgconfigexport LD_LIBRARY_PATH=~/opencv-3.4.1/build/installed/lib更新~/.bashrc$ source ~/.bashrc 查询OpenCV版本$ pkg-config --modver原创 2020-09-15 21:58:20 · 955 阅读 · 0 评论 -
Ubuntu18 编译opencv4.2.0
参考下方的博客,编译还是遇到了一些错误。[ 85%] Built target opencv_perf_video[ 85%] Linking CXX executable ../../bin/opencv_test_gapi[ 85%] Built target opencv_test_gapiMakefile:162: recipe for target 'all' failedmake: *** [all] Error 2向上查到错误:/home/wmz/Downloads/原创 2020-09-14 22:34:19 · 2639 阅读 · 4 评论 -
opencv_python图像金字塔
最近在看opencv_python,顺便做一下笔记,因为总是“拿来主义”不太好,要有点原创。图像金字塔原理不赘述了,网上太多了,直接上代码,做此笔记的主要目的一是备忘,二是看到好多图像金字塔在一张图上显示,感觉很酷,自己就搞了一下与大家分享。import cv2import numpy as npimg = cv2.imread('D:/SoftwareLearning/pytho原创 2018-01-06 09:13:10 · 528 阅读 · 0 评论