
OpenCV
文章平均质量分 62
AI吃大瓜
计算机视觉高级研究员,主要从事人工智能AI算法研究工作;熟悉多模态大模型,RAG技术,小模型开发如人脸检测,人脸识别,活体识别以及2D/3D Pose(人体姿态估计),行人重识别ReID等深度学习开发工作,具有丰富的项目开发工作经验。
展开
-
Python OpenCV实现文档自动矫正(含源码和测试数据)
基于OpenCV实现一个简易的文档自动矫正算法,支持通过用户交互实现文档矫正,也支持通过算法实现完全自动文档矫正,即文档一键矫正;文档自动矫正,一键矫正,图片矫正,文本矫正;文本图像倾斜矫正;文档倾斜矫正原创 2022-11-26 12:16:01 · 9881 阅读 · 8 评论 -
Python OpenCV实现鼠标绘制矩形框和多边形
Python OpenCV实现鼠标绘制矩形框和多边形框,OpenCV支持鼠标事件操作,通过setMouseCallback函数来设置鼠标事件的回调函数原创 2022-11-24 15:59:38 · 8147 阅读 · 21 评论 -
Python OpenCV实现鼠标画框矩形框
Python OpenCV实现鼠标画框使用Python+OpenCV实现鼠标画框的代码# -*-coding: utf-8 -*-""" @Project: IntelligentManufacture @File : user_interaction.py @Author : panjq @E-mail : pan_jinquan@163.c...原创 2019-02-28 09:34:09 · 10150 阅读 · 6 评论 -
Ubuntu18.04安装opencv和opencv_contrib
Ubuntu18.04安装opencv和opencv_contrib,源码编译opencv和opencv_contrib,安装opencv_contrib原创 2022-10-20 14:13:18 · 5456 阅读 · 0 评论 -
OpenCV求最小外接圆、最小外接矩形、椭圆拟合、直线拟合
import cv2import numpy as npif __name__ == "__main__": orig = cv2.imread('mask.jpg', flags=cv2.IMREAD_COLOR) mask = cv2.cvtColor(orig, cv2.COLOR_BGR2GRAY) _, mask = cv2.threshold(mask, 200, 255, 0) image = orig.copy() contours, hi...原创 2022-03-31 11:04:58 · 6380 阅读 · 0 评论 -
OpenCV Mat遍历的方法
OpenCV像素遍历常用的是三种方法:ptr指针,迭代器(iterator)以及动态地址at。动态地址at不适合用于像素遍历,速度太慢了,比较适合随机访问的方式; 使用Mat的ptr指针进行图像遍历更加高效,特别的:一般图像行与行之间往往存储是不连续的,但是有些图像可以是连续的,Mat提供了一个检测图像是否连续的函数isContinuous()。当图像连通时,我们就可以把图像完全展开,看成是一行进行处理。因此最高效的遍历方法如下:void image_copy(cv::Mat &原创 2021-12-01 14:57:19 · 6198 阅读 · 0 评论 -
OpenCV cv2.putText实现字符串换行'\n'
OpenCV cv2.putText实现字符串换行'\n'OpenCV显示字符串时,可以调用cv2.putText直接进行显示方法,但该函数是不支持换行符"\n"的要想实现自动换行,需要自己编程计算字符宽度,下移动宽度等操作这里提供自己实现draw_text_line()函数,可以直接支持换行符的显示代码实现:# -*-coding: utf-8 -*-""" ...原创 2019-12-11 20:15:10 · 10265 阅读 · 0 评论 -
OpenCV3.x实现KNN算法(K近邻算法),并保存训练模型
OpenCV3.x实现KNN算法(K近邻算法),并保存训练模型 OpenCV 3.x中cv::ml::Knearest类可以实现K-最近邻(KNN)算法,其详细用法可以参考官方说明文档:https://docs.opencv.org/3.2.0/dd/de1/classcv_1_1ml_1_1KNearest.html (1)、cv::ml::Knearest类:继承自cv::ml::St...原创 2018-05-08 16:26:06 · 6466 阅读 · 0 评论 -
OpenCV实现最大最小距离聚类算法
OpenCV实现最大最小距离聚类算法 【尊重原创,转载请注明出处】https://blog.youkuaiyun.com/guyuealian/article/details/80255524 本博客提供多版本的最大最小距离聚类算法:《聚类算法-最大最小距离算法(实例+代码)》,提供C++,Python,OpenCV以及Matlab版本的最大最小距离聚类算法的实现目录OpenCV实...原创 2018-05-09 16:52:19 · 12035 阅读 · 2 评论 -
OpenCV reshape函数需要注意的细节
OpenCV reshape函数需要注意的细节 本人在使用OpenCV的reshape()函数时,曾经碰到一个大坑,出现一个非常奇葩的问题,先把原始的代码贴上:#include <opencv2/opencv.hpp>#include "continuousCapture.h"using namespace cv;using namespace std;templat...原创 2018-05-09 17:04:02 · 8125 阅读 · 2 评论 -
YUV420与YUV444互转,YUV420与YUV444读取和保存,YUV的显示和播放功能
YUV420与YUV444互转,YUV420与YUV444读取和保存,YUV的显示和播放功能【尊重原创,转载请注明出处】:https://blog.youkuaiyun.com/guyuealian/article/details/82454945 OpenCV提供了RGB与YUV420/YUV444互转的接口:cvtColor(),但根尴尬OpenCV就是没有提供YUV444与YUV420互转...原创 2018-09-30 11:48:12 · 16682 阅读 · 2 评论 -
OpenCV实现Mat与vector,Mat与数组互转
OpenCV实现Mat与vector互转【尊重原创,转载请注明出处】https://blog.youkuaiyun.com/guyuealian/article/details/802530661、Mat与vector互转 下面是鄙人实现的Mat与vector互转的方法,需要注意的是vector转Mat时,使用reshape()后,必须clone()一份,否则返回的结果出错,关于这方面的原因,...原创 2018-05-09 17:09:38 · 52277 阅读 · 4 评论 -
OpenCV调用TensorFlow预训练模型
OpenCV调用TensorFlow预训练模型 【尊重原创,转载请注明出处】https://blog.youkuaiyun.com/guyuealian/article/details/80570120 强大OpenCV从自OpenCV 3.1版以来,dnn模块一直是opencv_contrib库的一部分,在3.3版中,它被提到了主仓库中。新版OpenCV dnn模块目前支持Caffe、T...原创 2018-06-07 12:27:31 · 48710 阅读 · 90 评论 -
OpenCV使用pthread实现多线程加速处理图像(C++)
OpenCV使用pthread实现多线程加速处理图像【尊重原创,转载请注明出处】https://blog.youkuaiyun.com/guyuealian/article/details/81912704目录OpenCV使用pthread实现多线程加速处理图像1.pthread多线程加速2.自己封装的多线程cvThread类 POSIX线程(POSIX threads),简称P...原创 2018-08-21 19:41:44 · 23547 阅读 · 7 评论 -
OpenCV+yolov2-tiny实现目标检测(C++)
OpenCV+yolov2-tiny实现目标检测(C++) 目标检测算法主要分为两类:一类是基于Region Proposal(候选区域)的算法,如R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN),它们是two-stage(两步法)的,需要先使用Selective search或者CNN网络(RPN)产生Region Proposal,然后再在Region...原创 2018-10-06 18:19:30 · 16276 阅读 · 5 评论 -
OpenCV+yolov3实现目标检测(C++,Python)
OpenCV+yolov3实现目标检测(C++,Python) 目标检测算法主要分为两类:一类是基于Region Proposal(候选区域)的算法,如R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN),它们是two-stage(两步法)的,需要先使用Selective search或者CNN网络(RPN)产生Region Proposal,然后再在Regi...原创 2018-11-15 09:38:29 · 23185 阅读 · 29 评论 -
OpenCV图像缩放resize各种插值方式的比较
OpenCV图像缩放resize各种插值方式的比较速度比较:INTER_NEAREST(最近邻插值)>INTER_LINEAR(线性插值)>INTER_CUBIC(三次样条插值)>INTER_AREA(区域插值)对图像进行缩小时,为了避免出现波纹现象,推荐采用INTER_AREA区域插值方法。OpenCV推荐:如果要缩小图像,通常推荐使用#INTER_AREA插值效果最好,而要放大图像,通常使用INTER_CUBIC(速度较慢,但效果最好),或者使用INTER_LINEAR(速度较快,效果还可以原创 2018-12-19 16:29:23 · 89207 阅读 · 7 评论 -
OpenCV实现人体姿态估计(人体关键点检测)OpenPose
OpenCV实现人体姿态估计(人体关键点检测)OpenPoseOpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿态估计。适用于单人和多人,具有极好的鲁棒性。是世界上首个基于深度学习的实时多人二维姿态估计应用,基于它的实例如雨后春笋般涌现。其理论基础来自Realtime Multi...转载 2019-08-04 11:53:03 · 57354 阅读 · 11 评论 -
OpenCV获取图像某点的颜色值,并设置某点的颜色
以下用OpenCV实现获取图像中某点的颜色值,并设置某点区域的颜色,OpenCV获取图像某点的颜色值,并设置某点的颜色原创 2017-09-14 16:10:06 · 28068 阅读 · 0 评论 -
OpenCV常见的优化方法和技巧总结
OpenCV常见的优化方法和技巧总结 【尊重原创,转载请注明出处】http://blog.youkuaiyun.com/guyuealian/article/details/78540206目录OpenCV常见的优化方法和技巧总结一、OpenCV常见的优化方法总结1.1 cv::imread()设置reduce模式:1.2 查表法:LUT,1.3 像素遍历1.4 ope...原创 2018-02-24 15:53:36 · 20185 阅读 · 4 评论 -
图像增强:多尺度的图像细节提升(multi-scale detail boosting)实现方法
图像增强:多尺度的图像细节提升(multi-scale detail boosting)实现方法 看到一篇博客介绍基于多尺度的图像的细节提升算法,其参考论文《Dark image enhancement based onpairwise target contrast and multi-scale detail boosting》,下图是该论文的核心算法过程。然后自己在Matlab和原创 2018-01-23 11:49:42 · 23012 阅读 · 16 评论 -
OpenCV中cvAdds和cvAdd中的mask的用法探讨
OpenCV中cvAdds和cvAdd中的mask的用法探讨Fn :包含 mask 参数的一些函数如下 [摘自opencv 2.3.1版本 C++]void add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1) subtract bitwise...转载 2017-09-21 19:46:14 · 2232 阅读 · 0 评论 -
OpenCV图像旋转,指定填充背景颜色边界颜色
OpenCV图像旋转,指定填充背景颜色边界颜色OpenCV与图像旋转有关的函数:(1)warpAffine函数OpenCV官方对warpAffine的解释: void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags=INTER_LINEAR, int borderMode=BO原创 2017-09-16 12:11:12 · 18813 阅读 · 1 评论 -
OpenCV在图像中添加文字,画点,画直线
OpenCV在图像中添加文字,画点,画直线 ,OpenCV在图像中添加文字,绘制点,绘制直线 ,原创 2017-09-06 20:27:54 · 21901 阅读 · 0 评论 -
OpenCV图像剪切,超出图像区域指定颜色填充
OpenCV图像剪切,超出部分区域指定颜色填充, 在OpenCV中实现图像裁剪和剪切是很简单的,但剪切时常常会出现超出边界的区域的情况,对于超出图像边界的区域,我们希望可以采用指定的颜色来填充。OpenCV3中提供了一个填充边界的函数cv::copyMakeBorder(对应opencv2中的cvCopyMakeBorder),利用这个函数,可以实现这个功能。下面实现一个Demo,对于超出剪切的区域,用红色填充:原创 2017-08-22 20:52:16 · 9230 阅读 · 0 评论 -
Dlib学习笔记:dlib array2d与 OpenCV Mat互转
Dlib学习笔记:dlib array2d与 OpenCV Mat互转 【尊重原创,转载请注明出处】 http://blog.youkuaiyun.com/guyuealian/article/details/77101603 在Dlib库中图像存储是使用array2d类型,而在OpenCV是使用Mat类型,Dlib中提供了#include <dlib/opencv.h>,可实...原创 2017-08-12 15:06:44 · 8069 阅读 · 1 评论 -
Dlib学习笔记:解决dlib array2d转 OpenCV Mat时颜色失真
Dlib学习笔记:解决dlib array2d转 OpenCV Mat时颜色失真 【尊重原创,转载请注明出处】 http://blog.youkuaiyun.com/guyuealian/article/details/77482549 在Dlib库中图像存储是使用array2d类型,而在OpenCV是使用Mat类型,Dlib中提供了#include <dlib/opencv.h>,可...原创 2017-08-22 17:17:42 · 5226 阅读 · 4 评论 -
MFC使用OpenCV在文档窗口中显示图像(支持多图片格式)
MFC使用OpenCV在文档窗口中显示图像(支持多格式图片),在VS2010中新建一个 MFC单文档或多文档的应用程序,结合OpenCV强大的图像处理工具,我们可以在MFC的“File/open”直接打开并显示图像,具体方法如下:(1)首先新建一个单文档或多文档的应用程序,项目名:Demo1(2)在“Demo1Doc.h ”头文件中包含“#include <opencv2/opencv.hpp>”并声明Mat变量img原创 2017-06-01 15:15:38 · 7214 阅读 · 1 评论 -
图像中某点绕点旋转后的坐标,图像旋转坐标位置
图像中某点绕点旋转后的坐标,图像中像素点旋转后的坐标位置 在平面坐标上,任意点P(x1,y1),绕一个坐标点Q(x2,y2)旋转θ角度后,新的坐标设为(x, y)的计算公式: x= (x1 - x2)*cos(θ) - (y1 - y2)*sin(θ) + x2 ; y= (x1 - x2)*sin(θ) + (y1 - y2)*cos(θ) + y2 ; 这是在平面原创 2017-10-19 18:48:58 · 43862 阅读 · 8 评论 -
OpenCV android sdk配置OpenCV android NDK开发实例
OpenCV android sdk配置OpenCV android NDK开发实例 【尊重原创,转载请注明出处】http://blog.youkuaiyun.com/guyuealian/article/details/78374708 在Android应用中调用OpenCV进行图像处理的方法有很多种,考虑到性能问题,本人推荐使用NDK进行开发,毕竟C/C++要比Java性...原创 2017-11-11 13:07:33 · 12281 阅读 · 6 评论 -
OpenCV HOGDescriptor 参数图解
HOG的基本理论请参考:http://blog.youkuaiyun.com/guyuealian/article/details/71702995最近要做图像特征提取,可能要用下HOG特征,所以研究了下OpenCV的HOG描述子。OpenCV中的HOG特征提取功能使用了HOGDescriptor这个类来进行封装,其中也有现成的行人检测的接口。然而,无论是OpenCV官方说明文档还是各个中英文网站目前都没有这转载 2017-12-06 15:27:39 · 1188 阅读 · 0 评论 -
OpenCV FileStorage类的数据读写操作
OpenCV FileStorage类的数据读写操作OpenCV的许多应用都需要使用数据的存储于读取,例如经过3D校准后的相机,需要存储校准结果矩阵,以方便下次调用该数据;基于机器学习的应用,同样需要将学习得到的参数保存等。OpenCV通过XML/YAML格式实现数据持久化。本文简要梳理了使用FileStorage类进行基本数据持久化操作,给出了示例代码。主要内容包括:FileStorage类构造转载 2017-12-14 11:20:09 · 6054 阅读 · 0 评论 -
OpenCV图像剪切的扩展和高级用法:任意裁剪,边界扩充
OpenCV图像剪切的扩展和高级用法:任意裁剪,边界扩充 , 利用感兴趣区域ROI和矩形类Rect,在OpenCV中可以很简单的就实现图像裁剪和剪切的功能,但剪切时常常会出现超出图像边界的区域的情况,对于超出图像边界的区域,我们必须进行特殊的处理,以避免出组数组越界的错误,如图1所示的裁剪错误。 对于特殊的要求,如,我们希望可以指定的颜色来填充,或者复制边界的像素的填充,甚至想镜像某个位置填充超出的边界,应该怎么办呢?OpenCV3中提供了一个图像边界的函数cv::copyMakeBorder(对应open原创 2017-09-27 15:25:13 · 26023 阅读 · 11 评论 -
OpenCV isContinuous()连续存储的问题
OpenCV isContinuous()连续存储的问题 如果矩阵元素在每行末尾连续存储而没有间隙,则方法返回true。 否则,它返回false。 显然,对于1x1或1xN矩阵总是连续的。一般 用Mat :: create创建的矩阵总是连续的。 但是,如果使用Mat :: col,Mat :: diag等提取矩阵的一部分,或者为外部分配的数据构造矩阵头,则此类矩阵可能不再具有此属性。 连续性标志存储在Mat :: flags字段中,并在构造矩阵标题时自动计算。 因此,连续性检查是一个非常快原创 2017-11-23 20:15:19 · 14157 阅读 · 1 评论 -
OpenCV3.0或OpenCV3.1的SVM操作
OpenCV2.0 SVM代码及其分析OpenCV 在很久以前就集成了SVM的功能,现在OpenCV升级到了3.0和3.1了,很多人都不习惯了怎么调用OpenCV中的SVM功能了。在之前OpenCV的SVM调用一直有个案例:首先,给定几组训练数据,并且给了label所对应的值。然后经过训练之后,对图像的各个位置进行预测是1还是-1。如果是1的话,用绿色来表示,如果是-1呢,用蓝色表示。并且还画出几转载 2017-12-01 11:05:07 · 1956 阅读 · 0 评论 -
OpenCV图像各向异性滤波
各向异性概念各向异性(英文名称:anisotropy)是指材料在各方向的力学和物理性能呈现差异的特性。晶体的各向异性即沿晶格的不同方向,原子排列的周期性和疏密程度不尽相同,由此导致晶体在不同方向的物理化学特性也不同,这就是晶体的各向异性。亦称“非均质性”。物体的全部或部分物理、化学等性质随方向的不同而各自表现出一定的差异的特性。即在不同的方向所测得的性能数值不同。对图像来说各向异性就是在每个像素点转载 2017-11-29 16:39:40 · 4287 阅读 · 0 评论 -
OpenCV删除面积小的区域 实现图像二值化分割 标记连通区域
OpenCV实现图像二值化分割 标记连通区域 删除面积小的区域,使用OpenCV实现这一功能:对图像进行二值化分割,并用“红色矩形”标记连通区域的面积,为了减少噪声的干扰,删除面积小的区域,代码中将连通区域面积(像素个数)不足100的区域认为是噪声点,并将其删除(即置为背景黑色)。本人制作了一个GIF动画图,以便大家观看效果图:原创 2017-09-30 14:54:52 · 22324 阅读 · 9 评论 -
OpenCV Mat类详解和用法
OpenCV Mat类详解和用法 我们有多种方法可以获得从现实世界的数字图像:数码相机、扫描仪、计算机体层摄影或磁共振成像就是其中的几种。在每种情况下我们(人类)看到了什么是图像。但是,转换图像到我们的数字设备时我们的记录是图像的每个点的数值。 例如在上图中你可以看到车的镜子只是一个包含所有强度值的像素点矩阵。现在,我们如何获取和存储像素值可能根据最适合我们的需要而变...转载 2017-04-13 16:58:49 · 164887 阅读 · 18 评论