当前位置: 首页 > wzjs >正文

做外贸的网站主要有哪些营销软文范文200字

做外贸的网站主要有哪些,营销软文范文200字,网站开发验收模板,网站建设的总体目标考核指标一.概念 霍夫变换是图像处理的一种技术,主要用于检测图像中的直线、圆等几何形状。基本思想就是将图像空间(直角坐标系或极坐标系)中的点映射到(霍夫空间)参数空间中,通过在参数空间中寻找累计最大值实现对特定形状的检测。 接下…

一.概念

霍夫变换是图像处理的一种技术,主要用于检测图像中的直线、圆等几何形状。基本思想就是将图像空间(直角坐标系或极坐标系)中的点映射到(霍夫空间)参数空间中,通过在参数空间中寻找累计最大值实现对特定形状的检测。

接下来以下面这张图进行说明:

二.霍夫直线变换

这种简单的又称为标准霍夫变换

2.1 直角坐标系

        对于一条直线(不垂直于x轴的直线),都可以用 y=k x+b 来表示,此时,x和y是横纵坐标,kb是一个固定参数。而霍夫变换将斜率k作为自变量,截距b作为因变量,式子也就变成了

b = -xk+y

        也就是说,霍夫空间中一相当直角坐标系中的一条直线霍夫空间中一条相当于直角坐标系一个点。反之,霍夫空间点和直线也可以映射到直角坐标系中。

        同时我们是想要找到直角坐标系上的一条直线,因此我们引进了投票机制,让我们画的直线上包含更多边缘点。而换到霍夫空间中,就是找到一个,这个被很多条直线经过。

2.2 极坐标系

        然而直角坐标系中对于x=1这种直线(垂直于x轴)来说,y已经不存在了,斜率无穷大,无法映射到霍夫空间中去。因此我们需要采用另一种坐标系:

极坐标系

注意:极坐标系中的theta是不是该直线与x轴的角度,而是从原点作一条直线垂直于目标直线,垂直的直线与x轴的角度才对

        极坐标系下是一样的,极坐标中的点对应霍夫空间中的线霍夫空间中的点对应极坐标中的直线。并且此时的霍夫空间不再是以k为横轴、b为纵轴,而是以为θ横轴ρ(上图中的r)为纵轴。

2.3 API使用

lines=cv2.HoughLines(image, rho, theta, threshold)

- image:输入图像,通常为二值图像,其中白点表示边缘点,黑点为背景。

- rho:r的精度,以像素为单位,表示霍夫空间中每一步的距离增量,  值越大,考虑越多的线。

- theta:角度θ的精度,通常以弧度为单位,表示霍夫空间中每一步的角度增量。值越小,考虑越多的线。

- threshold:累加数阈值,只有累积投票数(点数)超过这个阈值的候选直线才会被返回。

- 返回值:一个二维数组,每一行代表一条直线在霍夫空间中的参数 (rho, theta)也就是(r,θ)

# 养成好习惯,每次都自己敲前面的步骤
import cv2 as cv
import numpy as npimg = cv.imread('../images/huofu.png')# 灰度化
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 边缘检测
edges = cv.Canny(gray, 30, 70)# 获取边缘中的直线
lines = cv.HoughLines(edges,0.8, np.pi/180, 90)# np.pie/180表示把度数转化为弧度
print(lines)

[[[25.6        1.5707964]]

 [[21.6        1.5707964]]

 [[42.4        2.146755 ]]

 [[46.4        2.146755 ]]]

可见lines三维数组,遍历时只能拿出一个数据,需要用line[0]来取出二维数组中的每一个值。

# 绘制直线
for line in lines:rho, theta = line[0]# 获取sin_theta和cos_thetasin_theta = np.sin(theta)cos_theta = np.cos(theta)# 计算直线的起点和终点,假设直线交于图像左右两侧x0,x1 = 0,img.shape[1]# 根据公式推算得出y的值y0 = int((rho-x0*cos_theta)/sin_theta)y1 = int((rho-x1*cos_theta)/sin_theta)# 绘制直线cv.line(img,(x0,y0),(x1,y1),(0,0,255),1)

上面说的公式就是这个推导而来:

也可以有另一个假设,y1,y2 = 0,img.shape[0],画出来的图都是一样的,opencv绘制直线是根据给出的坐标计算修改该线上其他点,超出的部分不绘制即可。就算起始坐标与终点坐标不在原图上也可以

最后的阈值要合适,取的容易得到很多错误的线,甚至可能检测到水平或垂直的线导致绘图时将坐标转为int类型时无法进行,因为角度趋近于0导致sin_theta过小,进而使得int前坐标过大,报 cannot convert float infinity to integer。

# 显示图像
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

三.统计概率霍夫直线变换

是一种改进的霍夫变换,它在获取到直线之后,会检测原图中在该直线上的点,并获取到两侧的端点坐标,也就是不需要我们自己计算坐标了。然后通过两个点的坐标来计算该直线的长度,通过直线长度与最短长度阈值的比较来决定该直线要不要被保留。

lines=cv2.HoughLinesP(image, rho, theta, threshold, lines=None, minLineLength=0,    maxLineGap=0)

- image:输入图像,通常为二值图像,其中白点表示边缘点,黑点为背景。
- rho:极径分辨率,以像素为单位,表示极坐标系中的距离分辨率。
- theta:极角分辨率,以弧度为单位,表示极坐标系中角度的分辨率。
- threshold:阈值,用于过滤掉弱检测结果,只有累计投票数超过这个阈值的直线才会被返回。
- lines(可选):一个可初始化的输出数组,用于存储检测到的直线参数。
- minLineLength(可选):最短长度阈值,比这个长度短的线会被排除。
- maxLineGap(可选):同一直线两点之间的最大距离。当霍夫变换检测到一系列接近直角的线段时,这些线段可能是同一直线的不同部分。该参数指定了在考虑这些线段属于同一直线时,它们之间最大可接受的像素间隔。

返回值:一个二维数组,每个元素是一个包含4个元素的数组,分别表示每条直线的起始点结束点在图像中的坐标(x1, y1, x2, y2)

import cv2 as cv
import numpy as npimg = cv.imread('../images/huofu.png')# 灰度化
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 边缘检测
edges = cv.Canny(gray, 30, 70)# 获取边缘中的直线
lines = cv.HoughLinesP(edges, 0.8, np.pi/180, 90, minLineLength=50, maxLineGap=50)
print(lines)

[[[ 12  22 172  22]]

 [[ 21  64 157 152]]

 [[ 11  26 174  26]]

 [[ 19  68 152 154]]

 [[ 19  67 155 155]]]

# 绘制直线
for line in lines:x0,y0,x1,y1 = line[0]# 绘制直线cv.line(img,(x0,y0),(x1,y1),(0,0,255),1)
# 显示图像
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

四.霍夫圆变换

它可以从图像中找出潜在的圆形结构,并返回它们的中心坐标和半径。只不过线是用(r,θ)表示,圆是用(x_center,y_center,r)来表示,从二维变成了三维,数据量变大了很多。所以一般使用霍夫梯度法减少计算量。

circles=cv2.HoughCircles(image, method, dp, minDist, param1, param2)

- method:霍夫变换方法:霍夫梯度法,可以是 cv2.HOUGH_GRADIENT,这是唯一在OpenCV中用于圆检测的方法。

- dp:累加器分辨率与输入图像分辨率之间的降采样比率,用于加速运算但不影响准确性。设置为1表示霍夫梯度法中累加器图像的分辨率与原图一致

- minDist:检测到的圆心之间的最小允许距离,以像素为单位。

- param1 param2:这两个参数是在使用 cv2.HOUGH_GRADIENT 方法时的特定参数,分别为:

  - param1(可选):阈值1,决定边缘强度的阈值。

  - param2:阈值2,控制圆心识别的精确度。较大的该值会使得检测更严格的圆。

- 返回值:一个二维numpy数组,包含了所有满足条件的圆的参数(x_center,y_center,r)

# 养成好习惯,每次都自己敲前面的步骤
import cv2 as cv
import numpy as npimg = cv.imread('../images/huofu.png')# 灰度化
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 边缘检测
edges = cv.Canny(gray, 30, 70)# 获取边缘中的圆
circles = cv.HoughCircles(edges, cv.HOUGH_GRADIENT, 1, 20, param2=30)
print(circles)

[[[177.5  89.5  32.1]]]

# 绘圆
for circle in circles:x, y, r = np.int_(circle[0])cv.circle(img, (x, y), r, (0, 0, 255), 2)

这里使用的是np.int_向下取整对数组进行操作

# 显示图像
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

http://www.dtcms.com/wzjs/98211.html

相关文章:

  • 一级a做爰片免费网站短视频播放国外搜索引擎排名
  • 淄博高端网站建设网络推广策划方案怎么写
  • 武汉做网站及logo的公司广州seo优化
  • 怎么做网站或APP珠海seo快速排名
  • wordpress微信管理seo网络推广是什么意思
  • 浙江建设职业技术学院塘栖校区网站优化新十条
  • 个人微博网站设计每日新闻播报
  • 武汉做网站报价软文案例
  • 杭州市公共资源交易中心百度推广优化
  • 台州做网站的电话成都网站维护
  • 排版设计素材宁波seo费用
  • 免费网站设计神器厦门seo关键词优化培训
  • 今日头条wordpress主题google seo怎么做
  • 制作网站品牌公司简介怎么做网络营销
  • 大型商城网站建设方案怎么样建立自己的网站
  • 网站开发代码 免责声明经典广告语
  • 医生做学分在哪个网站网络营销推广的基本手段
  • 公明做企业网站企业网络推广
  • 自己编程做网站优化大师win10下载
  • 政府网站群云防护建设方案网站优化培训班
  • 网站必备功能女教师网课入侵录屏
  • 建设银行网站收款怎么打明细怎么建网站教程
  • 网站如何做的看起来高大上网站网络推广企业
  • 江门市网站建设竞价托管代运营
  • 个人博客网站建设青岛网站推广公司排名
  • 上传产品网站怎么做的网络推广员工作内容
  • 做网站的策划需要做什么站长论坛
  • 网站建设开发软件有哪些方面百度搜索优化关键词排名
  • ps如何做切片网站按钮营销渠道策略有哪些
  • 域名抢注网站是怎么软文广告经典案例300字