var
nurseryList
=
[
[
{
"lng"
:
119.51973599999998
,
"lat"
:
25.971432991526807
}
,
{
"lng"
:
119.51520899999997
,
"lat"
:
25.971432991526807
}
,
{
"lng"
:
119.51520899999997
,
"lat"
:
25.96829899159945
}
,
{
"lng"
:
119.51973599999998
,
"lat"
:
25.96829899159945
}
,
{
"lng"
:
119.51973599999998
,
"lat"
:
25.971432991526807
}
]
,
[
{
"lng"
:
119.51173599999998
,
"lat"
:
25.971432991526807
}
,
{
"lng"
:
119.51720899999997
,
"lat"
:
25.971432991526807
}
,
{
"lng"
:
119.51020899999997
,
"lat"
:
25.96829899159945
}
]
]
var
centerPonint
=
nurseryList
.
map
(
item
=>
{
return
this
.
calculateCenter
(
item
)
var
myIcon
=
new
BMapGL
.
Icon
(
require
(
'@/assets/img/nurseryPoint.png'
)
,
new
BMapGL
.
Size
(
54
,
58
)
)
;
centerPonint
.
map
(
item
=>
{
pt
=
new
BMapGL
.
Point
(
item
.
lng
,
item
.
lat
)
marker
=
new
BMapGL
.
Marker
(
pt
,
{
icon
:
myIcon
marker
.
addEventListener
(
'click'
,
function
(
)
{
_that
.
getInfoWindow
(
res
,
item
,
1
)
this
.
map
.
addOverlay
(
marker
)
;
calculateCenter
(
lnglatarr
)
{
var
total
=
lnglatarr
.
length
;
var
X
=
0
,
Y
=
0
,
Z
=
0
;
$
.
each
(
lnglatarr
,
function
(
index
,
lnglat
)
{
var
lng
=
lnglat
.
lng
*
Math
.
PI
/
180
;
var
lat
=
lnglat
.
lat
*
Math
.
PI
/
180
;
var
x
,
y
,
z
;
x
=
Math
.
cos
(
lat
)
*
Math
.
cos
(
lng
)
;
y
=
Math
.
cos
(
lat
)
*
Math
.
sin
(
lng
)
;
z
=
Math
.
sin
(
lat
)
;
X
+=
x
;
Y
+=
y
;
Z
+=
z
;
}
)
;
X
=
X
/
total
;
Y
=
Y
/
total
;
Z
=
Z
/
total
;
var
Lng
=
Math
.
atan2
(
Y
,
X
)
;
var
Hyp
=
Math
.
sqrt
(
X
*
X
+
Y
*
Y
)
;
var
Lat
=
Math
.
atan2
(
Z
,
Hyp
)
;
return
{
"lng"
:
Lng
*
180
/
Math
.
PI
,
"lat"
:
Lat
*
180
/
Math
.
PI
}
;
methods:{ addPoint(){ //所要计算的区域坐标数组 var nurseryList=[ [{"lng":119.51973599999998,"lat":25.971432991526807}, {"lng":119.51520899999997,"lat":25.971432991526807}, {"lng":119.51520899999997,"lat":25.96829899159945}, {"lng":119.519735999
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl=
2.
定义
黄色的颜色范围,在HSV颜色空间中。
3. 通过cv2.inRange()函数获取在黄色颜色范围内的所有像素。
4. 对获取到的二值图像执行形态学操作,以去除噪点和填补空洞。
5. 找到黄色
区域
的轮廓,并
计算
其
中心
坐标
。
下面是一个示例代码,可以帮助你实现这个任务:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 转换为HSV颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
#
定义
黄色颜色范围
lower_yellow = np.array([20, 100, 100])
upper_yellow = np.array([30, 255, 255])
# 获取在黄色颜色范围内的所有像素
mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
# 形态学操作,去除噪点和填补空洞
kernel = np.ones((5, 5), np.uint8)
mask = cv2.erode(mask, kernel, iterations=1)
mask = cv2.dilate(mask, kernel, iterations=1)
# 找到黄色
区域
的轮廓
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
#
计算
黄色
区域
的
中心
坐标
if len(contours) > 0:
c = max(contours, key=cv2.contourArea)
M = cv2.moments(c)
cx = int(M['m10'] / M['m00'])
cy = int(M['m01'] / M['m00'])
print("Yellow center: ({}, {})".format(cx, cy))
else:
print("No yellow color found.")
请注意,这只是一个示例代码,可能需要根据你的实际需求进行修改。