
python
兔子家的鱼
github 地址 https://github.com/HWenTing
展开
-
PhotoWakeUp —— 创新实训(8)
github地址https://github.com/HWenTing/Photo-Wake-Up鉴于边界点等效果较差,采取两种措施(1)使用bfs思想平滑图片。通过常识我们知道,相邻像素之间的深度值不会差别很大。从这种想法出发,选取基本点,然后用bfs方法减少相邻的像素之间的深度值差。主要代码如下import queue# 从中心点开始,bfs向外扩展,将变化大的...原创 2019-05-23 14:02:43 · 1284 阅读 · 4 评论 -
python opencv 霍夫圆变换
import cv2import numpy as npimg = cv2.imread('touxiang.jpg',0)img = cv2.medianBlur(img,5)cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,param1...原创 2018-11-28 09:11:10 · 17181 阅读 · 0 评论 -
python opencv 霍夫线变换
OpenCV里的霍夫变换在OpenCV里,上面的过程被封装在了函数cv2.HoughLines()里。它返回数组(ρ,θ). ρ的单位是像素,θ的单位是弧度。第一个参数是图像,应该是个二元图像。所以可以用canny边缘检测法或者使用阈值然后再做霍夫变换。第二个和第三个参数是ρ和θ的准确度。第四个参数是阈值,是它认为是个直线的最小的票数。记住,投票数依赖线上的点数,所以它表示了我们要检测的直线的最...原创 2018-11-28 09:08:35 · 16576 阅读 · 0 评论 -
python opencv 模板匹配
模板匹配是在一个大图里搜索和找模板图像位置的方法。OpenCV有个函数cv2.matchTemplate()来做这个。它吧模板图像在输入图像上滑动,对比模板和在模板图像下的输入图像块。它返回了一个灰度图像,每个像素表示那个像素周围和模板匹配的情况。如果输入图像大小是WxH而模板图像大小是wxh,输出图像的大小是(W-w+1, H-h+1)。当你得到了结果,你可以用cv2.minMaxLoc()函...原创 2018-11-28 09:07:09 · 18007 阅读 · 0 评论 -
python opencv 图像转换
图像领域,图像里的振幅变化,在边缘,或者噪点变化最大。所以我们可以说,边缘和噪点是图像里的高频内容。如果在振幅上没特别大变化,就是低频内容Numpy 里的傅里叶变换Numpy有一个FFT包来做这个。np.fft.fft2()让我们做频率变换。第一个参数是输入图像,是灰度的,第二个参数是可选的,决定输出数组的大小。如果比输入图像大的话,输入图像会补全0然后再做转换。如果比输入图像小,输入图像会被...原创 2018-11-27 09:30:45 · 17154 阅读 · 0 评论 -
python opencv Histogram 向后投影
用来在图片分割或者在图像里找感兴趣的目标,简单说来,它创建了一个和输入图像一样大小的图像,但是是单通道的。输出图像会有我们感兴趣的目标,但是它比其他部分更白。可以是不规则图形import cv2import numpy as nproi = cv2.imread('smallpig.jpg')hsv = cv2.cvtColor(roi,cv2.COLOR_BGR2HSV)targ...原创 2018-11-27 09:28:12 · 16930 阅读 · 0 评论 -
python opencv histogram2d
二维histogram,你就要考虑两个属性了。一般来说对于彩色histogram两个属性是色调和饱和度的值对于彩色histogram我们需要把图像从BGR转换成HSV。(记住,对于1维histogram,我们从BGR转成灰度)# OpenCV里的2D histogramimport cv2import numpy as npimg = cv2.imread('touxiang.jpg...原创 2018-11-27 09:27:46 · 17642 阅读 · 0 评论 -
python opencv histogram均衡
一个好的图片应该是有所有范围的像素。所以我们需要把histogram拉伸到两端,这就是histogram均衡。这个一般是用来提升图片的对比度。# Numpy的实现import cv2import numpy as npfrom matplotlib import pyplot as plt%matplotlib inlineimg = cv2.imread('tuzi.jpg')...原创 2018-11-27 09:26:42 · 17139 阅读 · 0 评论 -
python opencv histogram_直方图
histogram给出图像的密度分布的总体概念,它的x轴是像素值(0到255)y轴是对应的像素在图像里的数量。cv2.calcHist()函数cv2.calcHist(images, channels, mask, histSize, ranges[,hist[,accumulate]])1.images:这是uint8或者float32的原图。应该是方括号方式传入:“[img]”2.ch...原创 2018-11-27 09:25:09 · 19979 阅读 · 0 评论 -
python opencv 轮廓层级
什么是层级?一般来说我们用cv2.findContours()函数来检测图像里的目标,有时候目标在不同的地方,但是在有些情况下,有些图形在别的图形里面,就像图形嵌套,在这种情况下,我们把外面那层图形叫做parent,里面的叫child。这样图形里的轮廓之间就有了关系。我们可以指定一个轮廓和其他之间的是如何连接的,这种关系就是层级。每个轮廓有他自己的关于层级的信息,谁是他的孩子,谁是他的父亲等。...原创 2018-11-27 09:23:46 · 17174 阅读 · 0 评论 -
python opencv 轮廓:更多函数
import numpy as npimport cv2im = cv2.imread('zhua.jpg')imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)ret,thresh = cv2.threshold(imgray,100,255,0)#findContours函数修改原图#cv2.findContours()函数的三个参数,第一个是原...原创 2018-11-27 09:23:01 · 17662 阅读 · 0 评论 -
python opencv 分水岭算法对图像进行分割
import numpy as npimport cv2from matplotlib import pyplot as pltimg = cv2.imread('coin.jpg')gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)ret, thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_IN...原创 2018-11-28 09:14:33 · 18616 阅读 · 0 评论 -
python opencv 使用GrabCut算法分割前景
import numpy as npimport cv2from matplotlib import pyplot as plt%matplotlib inlineimg = cv2.imread('meixi.jpg')mask = np.zeros(img.shape[:2],np.uint8)bgdModel = np.zeros((1,65),np.float64)fgd...原创 2018-11-28 09:15:58 · 17618 阅读 · 0 评论 -
PhotoWakeUp —— 创新实训(7)
求出的正反面的深度图如下发现约有5%的点对应深度图不准确https://www.jianshu.com/p/1aac118197ff(obj文件的格式)接下来从深度图重新构建三维模型,深度值从之前得到的深度图直接读取,构建三维mesh时,将相邻的四个点相连,构造成两个三角形,点的顺序逆时针,主要代码如下with open(r'b.obj','w+') as file:...原创 2019-05-22 15:14:37 · 628 阅读 · 3 评论 -
PhotoWakeUp —— 创新实训(6)
这周的任务是求出整个mask对应的深度图Z(x) 即下图的(4)得到深度图后,下一步就可以反向构建三维立体模型阅读了Photometric Stereo with General, Unknown Lighting论文因为我们之前已经求出normal map文中论述了怎样由normal map(即每个点的法线向量)递推得到每个点的z(x,y)值遇到的问题...原创 2019-04-27 00:37:20 · 632 阅读 · 2 评论 -
PhotoWakeUp —— 创新实训(5)
这周的目标是求出mask内所有点对应smpl中点的坐标。通过这个对应关系,可求出论文中对应的(2),(3),(5)读了MF的Mean value coordinates主要使用如下公式主要代码如下result=[]for pos,j in enumerate(list_in_contours): tan=[] for i in ran...原创 2019-04-27 00:27:18 · 510 阅读 · 0 评论 -
PhotoWakeUp —— 创新实训(4)
论文再读⑤正面的身体自遮挡部位区域填充 使用PatchMatch [4]方法处理背部纹理是一个开放的研究问题[27,10,28]。文中给了两种方法:1、将正面文理镜像贴到背面2、使用可选的用户指南进行绘制。前后纹理用泊松混合缝合[32]⑥运动序列来自论文9他们有个ui界面,可以提供纹理填充方式选择和姿态调整等功能又与论文15提到的方法进行了对比又与[6,1]...原创 2019-04-15 16:10:08 · 717 阅读 · 2 评论 -
PhotoWakeUp —— 创新实训(3)
再次了思路通过照片得到关节点位置(cpm)通过关节点位置得到三维模型(smpl)将得到的三维模型进行投影,得到相应的法线贴图、蒙皮贴图、深度图抠图(ps,以及其他的一些算法)得到φ(i)(抠图的得到的原图的边界点与smpl向前投影得到的边界点的对应关系)得到f(x) (似乎是坐标的形式)Z_?S(x ∈ ?S) = Z_SMPL(f(x)) 原图mask边缘的深度图N(x) =...原创 2019-04-14 15:12:44 · 848 阅读 · 0 评论 -
python opencv ORB
import numpy as npimport cv2from matplotlib import pyplot as pltimg = cv2.imread('coin.jpg',0)# Initiate ORB detectororb = cv2.ORB_create()# find the keypoints with ORBkp = orb.detect(img,Non...原创 2018-11-28 09:21:12 · 17294 阅读 · 0 评论 -
python opencv SURF(加速稳健特征)
opencv3相对文档来说有一些变化surf sift等算法 属性值改为set get调用改为 cv2.xfeatures2d.SURF_createimport cv2img = cv2.imread('meixi.jpg',0)surf = cv2.xfeatures2d.SURF_create(400)kp, des = surf.detectAndCompute(img,No...原创 2018-11-28 09:20:21 · 18360 阅读 · 1 评论 -
python opencv SIFT(尺度不变特征变换)
我们看到了Harris角点检测。他们是跟旋转无关的,也就是说即使图像旋转了,我们还是可以找到相同的角。这是因为在旋转的图像里角还是角。但是如果尺度发生变化呢?一个角可能就不是角了,比如,下面的图像,当一个角在小图的窗口里是角,可是放大以后,在同样窗口里就是平的了。所以Harris角不是尺度不变的。import cv2import numpy as npimg = cv2.imread('t...原创 2018-11-28 09:18:57 · 16788 阅读 · 3 评论 -
python opencv Shi-Tomasi 角点检测和特征跟踪
OpenCV有个函数cv2.goodFeaturesToTrack()。它会用Shi-Tomasi方法(或者Harris角点检测,你可以指定)找到N个最强的角。这个函数更适合跟踪。import numpy as npimport cv2from matplotlib import pyplot as plt%matplotlib inlineimg = cv2.imread('tou...原创 2018-11-28 09:18:21 · 17609 阅读 · 0 评论 -
python opencv Harris角点检测
import cv2import numpy as npfilename = 'jiaodian.jpg'img = cv2.imread(filename)gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)gray = np.float32(gray)dst = cv2.cornerHarris(gray,2,3,0.04)# #resul...原创 2018-11-28 09:17:22 · 17054 阅读 · 0 评论 -
python opencv 轮廓属性
import cv2import numpy as np# .高宽比img = cv2.imread('zhua.jpg',0)ret,thresh = cv2.threshold(img,100,255,0)image,contours,hierarchy = cv2.findContours(thresh, 1, 2)cnt = contours[0]# 函数cv2.moment...原创 2018-11-27 09:22:10 · 17310 阅读 · 0 评论 -
python opencv 轮廓属性
import cv2import numpy as npimg = cv2.imread('zhua.jpg',0)ret,thresh = cv2.threshold(img,100,255,0)image,contours,hierarchy = cv2.findContours(thresh, 1, 2)cnt = contours[0]# 函数cv2.moments()会给你...原创 2018-11-27 09:19:03 · 17805 阅读 · 0 评论 -
python opencv 特征匹配特征匹配+Homography找目标
我们之前使用了查询图像,找到其中的一些特征点,我们取另外一个训练图像,找到里面的特征,我们找到它们中间最匹配的。简单说就是我们在一组图像里找一个目标的某个部分的位置。我们可以使用一个calib3d模块里的函数,cv2.findHomography().如果我们传了两个图像里的点集合,它会找到那个目标的透视转换。然后我们可以使用cv2.perspectiveTransform()来找目标,它需要至...原创 2018-11-29 09:12:32 · 18403 阅读 · 5 评论 -
python opencv 特征匹配
Brute-Force匹配器很简单,它取第一个集合里一个特征的描述子并用第二个集合里所有其他的特征和他通过一些距离计算进行匹配。最近的返回。对于BF匹配器,首先我们得用cv2.BFMatcher()创建BF匹配器对象.它取两个可选参数,第一个是normType。它指定要使用的距离量度。默认是cv2.NORM_L2。对于SIFT,SURF很好。(还有cv2.NORM_L1)。对于二进制字符串的描述...原创 2018-11-29 09:11:32 · 17758 阅读 · 0 评论 -
python opencv 图像金字塔
# 不同分辨率的图片叫做图片金字塔# 有两种图像金字塔1)高斯金字塔 2)拉普拉斯金字塔# 两者的简要区别:高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从金字塔底层图像中向上采样重建一个图像。# 高斯金字塔 # 我们用cv2.pyrDown()和cv2.pyrUp()函数来找高斯金字塔# 高斯金字塔的高级(低分辨率)是从低级别(高分辨率)的图像里移除连续的行和列来形成的im...原创 2018-11-26 10:38:15 · 17730 阅读 · 0 评论 -
python opncv Canny边缘检测
# Canny 边缘检测是一个多步骤的算法。# Canny边缘检测: # OpenCV-Python中Canny函数的原型为: # edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) # 必要参数: # 第一个参数是需要处理的原图像,该图像必须为单通道的灰度...原创 2018-11-26 10:37:38 · 17805 阅读 · 0 评论 -
python opencv 图片梯度
# OpenCV提供了三种类型的梯度过滤器或者高通滤波器,Sobel,Scharr和Laplaciancv2.CV_16S# Sobel算子 # Sobel算子依然是一种过滤器,只是其是带有方向的。在OpenCV-Python中, # 使用Sobel的算子的函数原型如下: # dst = cv2.Sobel(src, ddepth, dx, dy[, dst[, ksize[, ...原创 2018-11-26 10:36:31 · 18013 阅读 · 0 评论 -
python opencv 形态变换
# 形态变换是根据图片的形状进行的简单运算。一般被用在二值图像上。# 它需要两个输入,一个是我们的原始图片,另一个是被叫做结构元素或者是核,用来决定运算的类型# 腐蚀# 黑色增加# 原始图片里的一个像素(1或者0)只有在核下的所有像素都是1的时候才被认为是1.否则它就被腐蚀掉了(变成0)# 这个在移除小的白色噪点时很有用import cv2import numpy as np...原创 2018-11-26 10:35:22 · 17562 阅读 · 0 评论 -
python opencv 平滑图片
# 对于一维信号,图片可以被多种低通滤波器(LPF),高通滤波器(HPF)过滤,一个LPF可以用在移除噪点,或者模糊图片。HPF可以用在找图片里找到边界。import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('smallpig.jpg')kernel = np.ones((5...原创 2018-11-26 10:30:06 · 17466 阅读 · 0 评论 -
python opencv 图片的几何转换
# OpenCV提供了两个转换函数,cv2.warpAffine和cv2.warpPerspective,通过他们你可以进行各种转换,# cv2.warpAffine接受2x3的转换矩阵二cv2.warpPerspective接受3x3的转换矩阵做为输入。# 缩放import cv2import numpy as npimg = cv2.imread('feiy.jpg')re...原创 2018-11-26 10:27:37 · 17406 阅读 · 0 评论 -
python opencv 图片阈值
# 简单阈值import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('black_white.jpg', 0)ret,thresh1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)#大于阈值为白ret,thresh2 = cv2...原创 2018-11-26 10:25:03 · 17556 阅读 · 0 评论 -
python opencv 更改颜色空间
# 色彩转换,我们使用函数cv2.cvtColor(input_image, flag),这里flag决定转换的类型import numpy as npimport cv2# 对于BGR<->Gray转换我们使用标志位 cv2.COLOR_BGR2GRAY。而对BGR<->HSV来说类似,我们使用cv2.COLOR_BGR2HSV# 要获得其他标志,在Pyth...原创 2018-11-26 00:36:05 · 17751 阅读 · 0 评论 -
python opencv 特征匹配meanshift和camshift
meanshift均值平移import numpy as npimport cv2cap = cv2.VideoCapture(0)# take first frame of the videoret,frame = cap.read()# setup initial location of windowr,h,c,w = 250,90,400,125 # simply har...原创 2018-11-29 09:13:03 · 15885 阅读 · 0 评论 -
python opencv 特征匹配光流
OpenCV里的Lucas-Kanade光流import numpy as npimport cv2cap = cv2.VideoCapture(0)# params for ShiTomasi corner detectionfeature_params = dict( maxCorners = 100, qualityLevel = 0.3, ...原创 2018-11-29 09:13:34 · 16611 阅读 · 0 评论 -
python opencv 图像轮廓
# 轮廓可以被简单解释为一个连接所有连续点的曲线(沿边界),有同样的颜色和亮度。轮廓在做形状分析和目标检测与识别都很有用。import numpy as npimport cv2im = cv2.imread('zhua.jpg')imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)ret,thresh = cv2.threshold(imgray...原创 2018-11-27 09:17:21 · 17224 阅读 · 0 评论 -
python opencv 图片 算术运算
import numpy as npimport cv2x = np.uint8([250])y = np.uint8([10])# OpenCV相加是一个渗透运算,而Numpy的相加是模运算。print(cv2.add(x,y))# 250+10 = 260 =&gt; 255print(x+y) # 250+10 = 260 % 256 = 4[[255]][4]#...原创 2018-11-26 00:31:17 · 17379 阅读 · 0 评论 -
python opencv 图片 基本操作
# 你可以通过行和列坐标访问一个像素值。对于BGR图片,它会返回一个蓝,绿,红值的数组。对于灰度图片,只会返回对应的深度。import cv2import numpy as npimg = cv2.imread('touxiang.jpg')# 访问和修改像素值px = img[100,100]print(px)[224 240 239]# 设置和获取某一像素值img.i...原创 2018-11-25 13:49:50 · 18060 阅读 · 0 评论