
opencv
文章平均质量分 97
Felaim
Hey, you're not a nobody. You're a somebody.
展开
-
OpenCV:qt.qpa.plugin: Could not load the Qt platform plugin “xcb”
一、问题描述具体报错如下:qt.qpa.plugin: Could not load the Qt platform plugin “xcb” in “*************/site-packages/cv2/qt/plugins” even though it was found.This application failed to start because no Qt platform plugin could be initialized. Reinstalling the applic原创 2020-10-30 14:40:09 · 8340 阅读 · 15 评论 -
Python:图像处理中img[:,:,::-1]是什么意思?
我们经常在图像预处理中会看到类似如下代码img = cv2.imread("img_path")img = img[:,:,::-1].transpose(2, 0, 1)上述两句到底是什么含义呢?我们今天就来解决这个问题。首先需要明白一点,我们通过cv2读图片是,数据读取的通道顺序是bgr,并且是height, width, channel的排列方式。所以切开上述第二行代码来看:img[:,:,::-1]也就是我们任意不改变width维的方式,也不改变height维的方式,仅仅改变cha原创 2020-09-29 15:04:42 · 14486 阅读 · 2 评论 -
人脸姿态估计预研(二)
人脸姿态估计预研(二)1. 背景为什么要写第二篇,因为第一篇写的很简单,自己的思考部分比较少,并且还有一些细节需要补充2. 算法部分2.1 到底使用多少个点?这个确实是一个比较实在的问题,因为博客里LZ也看到不少,基本上都是参考opencv与DLIB那篇博客博客的,下面评论中有很多问题,自然LZ也是有很多疑惑的。首先一个问题便是到底用多少个点?这些点的3D模型怎么得到的,模型应该也是有对应的方向的,怎么对应呢?因为姿态估计都是近似的使用一个通用人脸的3D模型,所以LZ也就借鉴一下这种做法首先下原创 2020-08-27 15:23:44 · 3042 阅读 · 3 评论 -
人脸姿态估计简单预研(DLIB+OpenCV,含python代码示例)
人脸姿态估计简单预研一、 背景介绍其实背景很简单,就是有些算法针对正脸的效果很好,但是对于特别大的侧脸,效果就不是很好,所以需要需要根据人脸姿态来进行过滤。二、 算法的简要介绍1. 什么是姿态估计在计算机视觉中,对象的姿态是指其相对于相机的相对方向和位置,我们可以通过相对于相机移动对象,也可以相对于对象移动相机,还可以同时移动相机和对象,如果相机和对象保持相对静止,虽然相机和对象在世界坐标系中的位置改变了,但是两种之间的关系并没有变化,换句话说你从相机中获得对象的图片并没有变化,那么我们也可以认为原创 2020-08-19 14:37:38 · 3061 阅读 · 1 评论 -
OpenCV: blur函数的边界到底是怎么处理的?
blur函数的边界到底是怎么处理的?LZ倒是一直使用这个blur函数,而且一般都是用作中值滤波,所以在python中使用起来相当方便.结果后面需要考虑边界的时候,一个问题把我问住,这个blur在边界是怎么处理的呢?例如下面这个用法:winSize = (3, 3)blur_res = cv2.blur(test, winSize)我们先来看下python中的函数调用def blu...原创 2020-04-29 19:46:54 · 2291 阅读 · 3 评论 -
ImporError: libSM.so.6: cannot open shared object file: No such file or directory (一行命令解决问题)
libSM.so.6: cannot open shared object file: No such file or directory1. 背景在anaconda环境中安装Opencv,使用如下命令pip install opencv-python激活对应环境时, import cv2报错>>> import cv2Traceback (most recent ...原创 2020-04-26 18:51:04 · 439 阅读 · 0 评论 -
OpenCV python: 任意多边形填充和凸多边形填充(fillPoly和fillConvexPoly的区别,有图有真相!)
我们经常会使用contour或者自己圈出来的区域填上对应的值或者,所以经常会使用这样两个函数:fillPoly和fillConvexPoly,至于这两个函数有什么区别呢?小伙伴从题目中就可以看出来了,一个是任意多边形进行填充(有可能是非凸的),一个是对凸多边形进行填充。两个函数的使用方法和说明:官方文档:函数fillConvexPoly绘制一个填充的凸多边形。 该函数比函数fillPoly快得...原创 2020-03-26 19:25:50 · 9570 阅读 · 1 评论 -
OpenCV python:如何判断点和轮廓的位置 (pointPolygonTest)
理想很丰满,现实很骨感,常常以为实现一个算法不是很难,但在现实中场景更加复杂,硬件限制,速度要求,好吧,只能push LZ想方法解决,也就是说进入了PDCA(PLAN,DO,CHECK,ACTION)的模式。下面介绍一个OpenCV的小接口,用来判断点和contour的位置关系def pointPolygonTest(contour, pt, measureDist): # real sign...原创 2020-03-26 18:08:57 · 12847 阅读 · 6 评论 -
Opencv python: seamlessClone泊松融合 (我把Lena变成了彼岸花怪/(ㄒoㄒ)/~~)
为什么要进行融合呢?原因是LZ在进行贴图操作的时候,经常会出现很明显的边界效应,在各种查找资料的情况下,找到了一种比较适合图像融合的方法,并且OpenCV有对应的接口,所以就网上下了图片,做了一些尝试,当然最后并没有使用这个函数是因为贴图效果太不明显了,LZ甚至以为是自己代码写错了,所以这个函数因人而异。首先这个函数的用法:def seamlessClone(src, dst, mask, p...原创 2020-03-26 16:32:08 · 4848 阅读 · 0 评论 -
OpenCV ERROR: SystemError: new style getargs format but argument is not a tuple
这个错误是在OpenCV中常见的一个错误,其实就是输入数据格式不正确,需要的是一个tupleSystemError: new style getargs format but argument is not a tuple直接转成tuple的格式就可以了!tuple(your variables)问题解决!...原创 2020-03-23 15:30:26 · 4716 阅读 · 0 评论 -
Tensorflow 1.14: Eigen using failed(OpenCV冲突问题)
之前LZ在编译tf1.14接口的时候,其实就已经强调了Eigen 版本选择的重要性,但是我们经常使用不止一种三方库,在使用不同算法库的时候其实就会存在这样那样动态库冲突的情况,而且这种情况最为头疼。。。下面是LZ的一段测试代码#include <stdio.h>#include <iostream>...tf的一些头文件...#include "opencv...原创 2020-01-15 14:42:28 · 1846 阅读 · 0 评论 -
OpenCV: Linux下编译GPU版本(4.2.0版本) (2020.4.22更新)
从LZ开始接触CV也有几个年头了,OpenCV的版本也在不停的更新迭代,新版本的OpenCV较之前版本多了很多特性,也为了兼容现在大火的深度学习,会增加很多深度学习框架的支持,除此之外也增加了很多支持GPU操作的API,所以写这个博客的目的不是为了记录怎么编译OpenCV,而是记录下怎么编译GPU版本的OpenCV。...原创 2020-01-14 19:55:19 · 5712 阅读 · 0 评论 -
OpenCV: 10行代码完成磨皮算法
在公司的好处是可以根据公司不同的项目,来学习不同的方向,而在学校的好处就是可以给你足够的时间来对一个你感兴趣的领域进行深入研究。一个是从广度上进行学习,另一个是从深度上进行学习,哈哈,只要每天有所得就行。下面是LZ预研美颜算法时,使用OpenCV进行一个简单的pipeline构建,当然代码量非常少,只有10来行,效果呢还是有的,但是肯定得对每隔过程进行优化(≧▽≦)/啦啦啦放出代码,当中进行注...原创 2019-12-06 09:56:16 · 1505 阅读 · 0 评论 -
OpenCV:图像上标出关键点
cv::Point key;//点的排列方式按照x,y,x,y方式保存std::vectors<float> points;for(int i =0; i<points.size(); i++){ key.x = int(points[2*i]); key.y = int(points[2*i+1]); cv::circle(img, key, 3, CV_RGB(0...原创 2019-11-08 11:28:40 · 3223 阅读 · 3 评论 -
OpenCV: 调用OpenCV动态库与静态库的书写方式(Makefile)
下方makefile的书写针对的是Opencv2.4.9.1版本的动态库调用和OpenCV3.4.1的静态库调用,别问为啥,感觉都是泪,其实做研发、工程、产线这个当中存在很多问题,例如最简单的就是使用版本不一致的问题,这个很耗时耗力。举个例子,LZ安装的都是Tensorflow1.14版本,公司写的接口全部是1.13版本的,就会出现LZ训练好了模型,因为tf的版本不一致而可能导致两个问题,1.L...原创 2019-10-28 16:34:35 · 2366 阅读 · 0 评论 -
jni中调用opencv
现在好多软件底层的代码都是c++编写的,如果考虑到运行效率的话,包括一些移植性问题,有些代码的开发还是会选择c++。但是如果代码中以来很多第三方库,然后你还要做到android端,那也是很崩溃的。如果LZ有一个简单的OpenCV的代码,当然是c++,那我要怎么移植到android端呢,换个简单点的说法,我怎么能include的时候不报以下类型的错误:fatal error: opencv2/core原创 2017-07-23 21:58:58 · 2189 阅读 · 0 评论 -
Ubuntu查找文件夹中内容包含关键字的文件(OpenCV中查找对应函数定义的技巧)
今天LZ在使用OpenCV的时候发现一个很尴尬的问题,相信很多小伙伴都遇到过类似的问题,就以今天LZ碰到的问题为例吧。 今天利用OpenCV3.2对图像进行提取轮廓信息后,对轮廓进行拟合圆锥曲线,但是效果不是很好,所以想从源代码进行查看。 好,具体举个例子吧。#include <opencv2/imgproc.hpp>using namespace cv;//方便起见就用命名空间了using原创 2017-11-23 21:41:01 · 1073 阅读 · 0 评论 -
OpenCV一些函数的简单笔记
1. 函数cvRound,cvFloor,cvCeil 都是用一种舍入的方法将输入浮点数转换成整数: 具体说明: 1)cvRound 返回跟参数最接近的整数值; 2)cvFloor 返回不大于参数的最大整数值; 3)cvCeil 返回不小于参数的最小整数值。本篇博客对应都会是OpenCV中一些常用函数的使用方法,比较简单,如果需要详细说明原创 2018-02-26 19:59:52 · 486 阅读 · 0 评论 -
OpenCV3与OpenCV2多版本共存的问题
其实很久之前LZ就遇到过类似的问题,大神们的口味不同,需要的OpenCV的版本也不一致,这样在想体验大神们公开的源码的时候就会产生各种问题,其中最常见的应该就是OpenCV版本不兼容的问题。有些代码比较友好,同时兼容2版本和3版本,但大多数还是只支持一个版本。其实很简单,只要在cmake的时候进行对应的设定,针对不同版本给定不同的路径,在对应CMakeLists.txt中也设定对应的路径,管理...原创 2018-06-11 19:57:33 · 4680 阅读 · 0 评论 -
OpenCV: Mat属性step,size,step1,elemSize,elemSize1一次搞清
OpenCV经常用到的几个Mat的属性,但是每次用到都要查一下,今天直接弄清楚些。首先要明白几个计算机基础的基本概念:Bit意为“位”或“比特”,是计算机运算的基础,属于二进制的范筹; Byte意为“字节”,是计算机文件大小的基本计算单位;这两者应用的场合不同。通常用bit来作数据传输的单位,因为物理层,数据链路层的传输对于用户是透明的,而这种通信传输是基于二进制的传输。在应...原创 2018-06-15 11:09:27 · 5306 阅读 · 5 评论 -
OpenCV 遇到的常见问题
怎么查看OpenCV的版本呢pkg-config --modversion opencv我是通过apt-get安装的,已经是编译好的OpenCV,查出来的版本号是2.4.82.Ubuntu 安装OpenCV-nonfree模块sudo apt-get updatesudo add-apt-repository --yes ppa:xqms/opencv-nonfreesudo apt-get u原创 2017-03-16 20:47:43 · 925 阅读 · 0 评论