备注:关于配置环境变量的更详细信息,可依据这篇博文
检验:添加路径成功后,点击path之后,应该如下图所示
如图所示,一共有四个方框。
方框1:工程位置,可自己选择
方框2:环境位置,建议在工程位置之下新建一个子文件夹vene作为环境位置
方框3:编译器,选择python的安装地址
方框4:无需选择
配置完成后,点击create,生成的界面如图所示
在pycharm界面里,点击 File-Settings-Project-PythonInterpreter
Python Interpreter应该选择python的安装地址,和Step2的第三个方框相同。
根据需要添加Package文件,如此处的opencv-python。笔者已经安装过,若是第一次安装,应该点击左下角“+”键(如上图),在搜索框中搜索"opencv python",选择最新版本之后,点击"install package"(如下图)。
返回到主界面,右击当前工程文件-New-Python File
输入新建的Python File 的名称,回车之后生成.py文件。
在空的main.py文件中输入import cv2
,引入头文件。
1.报错:unindent,但实际上并无缩进的错误
解决: 用tab替换空格
1.传入的必须是二值化的图像,并且在其中的白色区域找寻边缘。
注:只有这个函数是用的二值化图像,其他的drawrectangular等,都要求是三通道BGR图像,就是未经处理的原图即可,通常为了不影响原始图像,会编写imgContour=img.copy
二值化的方法有
*Method1:*函数 cv2.threshold
img = cv2.imread(r"D:\360MoveData\Users\KID\Desktop\1.jpg", cv2.IMREAD_UNCHANGED)
ret, thresh = cv2.threshold(
cv2.cvtColor(img.copy(), cv2.COLOR_BGR2GRAY), # 转换为灰度图像,
130, 255, # 大于130的改为255 否则改为0
cv2.THRESH_BINARY) # 黑白二值化
以上参考Python:Opencv cv2.findContours()函数 查找轮廓
Method2: 函数 imgCanny
img = cv2.imread("Resources/shape.jpg")
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgBlur=cv2.GaussianBlur(imgGray,(7,7),1)
imgCanny=cv2.Canny(imgBlur,50,50)
#imgCanny得到的就是二值化的图像
*Method3:*设置遮罩,只有mask范围内为白色
mask = cv2.inRange(hsv, orangeLower, orangeUpper)
mask = cv2.erode(mask, None, iterations=2)
mask = cv2.dilate(mask, None, iterations=2)
==注:特殊情况下:图片中白色的区域就是想要寻找contour的区域,此时颜色的最低和最高的阈值分别是(0,0,0)和(255,255,255),但这样在实际运行中会无法找到边缘点,所以需要适当改下范围。
2.如何由cv2.findContours()这个函数得到实际的轮廓
Method1: 直接写出改函数返回的两个图像
contours,hierarchy=cv2.findContours(img,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) ##cv2.findContours()在opencv-python4中返回的是两个值
for cnt in contours: ##用于找多个轮廓
Method2: 再通过imutils.grab_contours()函数
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)