图像处理
文章平均质量分 55
牧羊女说
有马甲线的女程序猿、攻城狮、加班狗~
展开
-
利用NVIDIA DALI读取视频帧
NVIDIA DALI的介绍和基础用法原创 2023-11-17 18:32:43 · 1469 阅读 · 4 评论 -
dlopen “libnvcuvid.so“ failed!
dlopen "libnvcuvid.so" failed! 的解决方法原创 2023-09-02 15:42:20 · 645 阅读 · 0 评论 -
OpenCV用鼠标获取坐标位置
开发一个小功能,要求在图上手动找出一些特殊点,并将配对的点用直线连起来。这个功能需要响应鼠标操作,OpenCV里通过一个中介函数配合一个鼠标回调函数来实现,这个中介函数为setMouseCallback,原型如下:/** @brief Sets mouse handler for the specified window@param winname Name of the window.@param onMouse Callback function for mouse events. See原创 2020-10-13 16:13:35 · 2722 阅读 · 0 评论 -
一个利用OpenCV进行带掩膜的图像拷贝的例子
比较简单,闲话少说,直接上码。#include <iostream>#include <vector>#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"using namespace std;...原创 2020-03-11 21:00:36 · 474 阅读 · 0 评论 -
使用OpenCV对工业相机进行视频录制
按照以往的做法,视频录制推荐FFMPEG、GStreamer等效率更高的方式,OpenCV在视频方面就显得不是那么专业了,但由于其较高的封装性和使用方法简单,小伙伴们有时候更愿意拿OpenCV去做一些专业度要求不高的简单录制。OpenCV工程中给出了录制普通摄像头的示例代码,如下:/** @file videowriter_basic.cpp @brief A very basi...原创 2019-10-23 18:11:42 · 3230 阅读 · 5 评论 -
OpenCV里的常用Rect用法
OpenCV里通常定义一个矩形有两种方式,一种是通过矩形左上角和矩形宽高来定义:Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height)另一种是通过矩形左上角点坐标和右下角点坐标来定义:Rect_(constPoint_< _Tp > &pt1, constPoint_< _Tp > &pt2)Re...原创 2020-03-09 19:55:13 · 3373 阅读 · 0 评论 -
OpenCV中drawContours用法
使用了很久的drawContours,绘制一个轮廓向量基本只会用一种方法,类似如下:for(int i = 0; i < contour_vec.size(); i++){ drawContours(blkImg, contour_vec, i, Scalar(255), -1);}...原创 2020-03-11 16:40:59 · 12749 阅读 · 0 评论 -
轮廓相减的两种实现方法
在优化工程代码效率。从一系列轮廓合集中减去其中的一个轮廓分量,之前都是通过二值图像相减的方式,即把总轮廓绘制在一副图像上Img_1,再把要减去的分量绘制在另一幅图像Img_2上,然后通过图像相减得到差值图像Img_3,再从Img3中找出相减后的结果。今天突然灵机一动,发现这么减来减去简直太浪费资源了,明明一副图像就能搞定呀!只要在一副图像上绘制总轮廓,然后用背景像素绘制要减去的轮廓不就OK了?傻呵...原创 2020-03-13 16:57:19 · 1096 阅读 · 0 评论 -
求两个矩形之间的最小距离
正在参与的工程里有一个小功能是求两个矩形之间的最小距离。大致翻了一下OpenCV,貌似没看到现成的函数,那就自己写一个好了。一个画面中,两个矩形的几何关系大致可分为如下几种,以C1为参考,分别是:(1) 不相交,但在X或Y轴方向上有部分重合坐标,比如矩形1和2,此时,最小距离为两个矩形之间的最小平行距离或垂直距离,如图中红色箭线D12所示。(2) 不相交,在X和Y轴方向上均无重合坐标,...原创 2020-03-13 11:38:59 · 7234 阅读 · 14 评论 -
用图像像素填充轮廓内部
有个算法需求,要求保留原图像上已知轮廓内部的图像元素,而轮廓之外的区域则填成灰色。想了好几种方法,都不够简洁方便,最后还是感觉OpenCV的copyTo()函数最简洁。copyTo()是OpenCV Mat类中的方法,有两种用法,定义如下:第一种用法,简单的图像复制,相信大家都已耳熟能详,无需过多解释。第二种用法,带mask的图像复制,之前在我们的工程里也大量出现,但其实并没有好好研究过mask的作用。mask需要与源图像具有相同的size,mask中的非零像素区域对应的源图像区域会被拷贝到原创 2020-05-22 12:52:41 · 1329 阅读 · 0 评论 -
OpenCV将图像旋转180度
OpenCV将图像旋转90度的倍数,如90度、180度、270度,一般有两种方式:(1) 使用transpose()和flip()两个函数的组合;(2) OpenCV3 以后可以使用rotate()函数实现图像旋转。1. transpose() + flip()transpose()实现矩阵的转置,定义如下:void cv::transpose( InputArray _src, O...原创 2019-11-27 21:09:05 · 8496 阅读 · 3 评论 -
OpenCV中的基本数据结构
最近在静下心来梳理一份视觉代码,把当初直接用上但是却没仔细咀嚼的东西拿出来整理一下。其实静下心来做些事情真的不容易,时常被各种杂事打断,Anyway,想办法保持短时间专注还是必要的。1. PointPoint数据结构表示二维图像中的点,由图像坐标x和y组成。用法:Point myPoint;myPoint.x = 100;myPoint.y = 50;或者Point myPoi...原创 2019-07-30 15:30:48 · 569 阅读 · 3 评论 -
记一种彩色图像分割方法
由于运动物体的颜色不同(有些运动物体可能跟背景颜色比较接近),之前基于颜色的分割方法总是不尽如人意,虽然大部分情况下能够分割出运动物体,但有时存在分割不完整导致后续判断失误的情况。今天尝试了一种方法,目前来看仿真效果还不错,除非出现一种极端情况,就是运动物体颜色(H、S、V三个分量跟背景完全相同),但这种情况出现的几率相对来说比较小,因此可以暂时忽略不计。因为安全考虑,此处不贴原图,也不过...原创 2019-02-19 17:54:52 · 1673 阅读 · 1 评论