实验要求
用Opencv标记地图中的圆形区域、分离区域
实验环境
Visual Studio Code、Python(我们这里使用版本3.8.0)、Opencv(我们这里使用版本3.4.8.29)
实验步骤
一、安装Python
1.在官网https://www.python.org/下载Python(进入官网后按图示步骤操作)(所有的下载最好都在白天完成,晚上服务器可能限制访问报错)
2.安装中
二、配置环境变量
1.在桌面按下windows键,输入“编辑系统环境变量”,进入编辑环境变量
2.添加环境(就是把你安装Python路径添加进来,这里还要在这个路径后面加 \Scripts 再添加一次):
第一个:C:\Users\CORDI\AppData\Local\Programs\Python\Python38(填你自己记住的Python安装路径)
第二个:C:\Users\CORDI\AppData\Local\Programs\Python\Python38\Scripts
三、配置Opencv
1.按windows+R打开“运行”窗口,输入 cmd 点击确定,然后输入 pip install opencv-python==3.4.8.29 回车开始下载,下载进程会比较缓慢,要耐心等待(说明一下:这里双等于号后面的3.4.8.29是opencv版本,可以按自己需求输入合适的版本号进行下载的,本文的实例需要用到3.4.8.29,我就下载它了)
这里注意一下
如果命令行下载opencv时出现这个升级提示,升级了再输入pip install opencv-python==3.4.8.29继续下载opencv即可
四、下载安装配置VS Code
1.进入官网https://code.visualstudio.com/下载VS Code安装包
2.下载好后双击开始安装,然后和安装普通软件一样安装就行了
3.新建好文件后,打开“调试”,点击“添加配置”,在下拉列表中点击“Python”,继续点击“Python File”,添加一行 “pythonPath”: “C:\Users\CORDI\AppData\Local\Programs\Python\Python38\python.exe”, 然后按Ctrl+S保存
4.点击菜单栏中的“查看”,选择“终端”,在窗口输入 pip install matplotlib 回车运行等待下载完成
代码清单
#----------------------------【Specification】----------------------------
# Coding: UTF-8
# 程序名称:【Opencv查找地图圆形轮廓、标记、分离】
# IDE:Visual Studio Code
# Python版本:3.8
# OpenCV版本:3.4.8.29
# 2019年12月8日 CREATED BY 一箭双雕
#-------------------------------------------------------------------------
import cv2
import matplotlib.pyplot as plt
import copy
class Processor(object):
def __init__(self, image_full_path):
self._image_full_path = image_full_path
def run(self):
image = cv2.imread(self._image_full_path, cv2.IMREAD_COLOR)
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(gray_image, 160, 255, cv2.THRESH_BINARY)
binary, contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
segmentation = copy.deepcopy(image)
segmentation *= 0
roi = list()
for i, contour in enumerate(contours):
area = cv2.contourArea(contour)
if area < 16:
continue
(x, y), radius = cv2.minEnclosingCircle(contour)
if radius > 16 or (143 < x < 181 and 189 < y < 300) or (x > 318 and y > 187):
continue
roi.append(contour)
image = cv2.circle(image, (int(x), int(y)), int(radius), (255, 0, 0), 2)
segmentation = cv2.circle(segmentation, (int(x), int(y)), int(radius), (255, 255, 255), -1)
plt.figure(1)
plt.imshow(image)
plt.show()
plt.figure(2)
plt.imshow(segmentation)
plt.show()
if __name__ == '__main__':
processor = Processor('./test.jpg')
processor.run()
5.接下来开始调试运行
6.大功告成截图:
补充一下:如果用pip install opencv-python==3.4.8.29安装的opencv,在编译的时候报错出现了ImportError: No module named cv2,没有找到cv2的模块。可以去opencv官网下载opencv,然后将openCV安装目录里的python\cv2\python-2.7目录下的cv2.pyd复制到Python安装目录里Lib中site-packages内即可解决。如图操作:
实验心得
把FAST的rap唱给我听,我替你写心得!