传统图像处理常用语句整理

 以下是python代码利用opencv进行图像处理的相关常用语句整理,该代码不能直接拷贝运行,只能供摘抄个别语句去实现你想要的功能实现。在理解的基础上去灵活应用这些语句。

#如果轮廓线是不闭合的 就使用长度来排序使用
def cnt_length(cnt):
    """length"""
    length = cv2.arcLength(cnt,False)
    return length
# 如果轮廓线是闭合的 就使用面积来排序使用
def cnt_area(cnt):
 "面积"
   area=cv2.contourArea(cnt)
   return area


mask = np.zeros(img.shape, np.uint8)  # 原图大小的纯黑mask图像

mask2=~mask1

mask[:]=255                            #生成白色mask图像

gray=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

cv2.namedWindow('src',cv2.WINDOW_AUTOSIZE)

himg = cv2.equalizeHist(gray)  # 直方图均匀化

ret, binary = cv2.threshold(himg, 132, 255, cv2.THRESH_BINARY)  # 阈值化

contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  # 寻找轮廓线
contours.sort(key=cnt_length, reverse=True)//轮廓按照长度排序reverse=True升序排列,反之降序排列
contours.sort(key=cnt_area, reverse=True)//轮廓按照面积排序reverse=True升序排列,反之降序排列
cv2.drawContours(mask1, contours, -1, (255, 255, 255), cv2.FILLED)#画轮廓

   for contour in contours:  # 遍历所有轮廓

       area = cv2.contourArea(contour)  # 轮廓图面积    

       x, y, w, h = cv2.boundingRect(contour)

       cv2.rectangle(mask1, (x, y), (x + w, y + h), (255, 0, 0), 2, cv2.LINE_AA)

       cv2.putText(mask1, "No.%d" % (i + 1), (x, y - 5), font, 0.8, (255, 0, 0), 2)

       if (area > 200):  # 轮廓面积大于200的

         #ellipse = cv2.fitEllipse(contour) #根据轮廓拟合椭圆

         #cv2.ellipse(copyImg, ellipse, (B,G,R), 2, cv2.LINE_AA)

         #x, y = ellipse[0]

         circle=cv2.minEnclosingCircle(contour) #通过轮廓拟合最小外接圆

         Cx,Cy=circle[0]                        #获得外接圆圆心点

         r=circle[1]                            #获得外接圆半径

         cv2.circle(mask, (np.int(Cx), np.int(Cy)) ,np.int(r-10) ,(255, 255, 255), 
         -1, 8,0)              

         ROI = cv2.bitwise_and(copyImg, mask)  # 图形与mask 的 and 运算
//中间结果窗口展示
cv2.imshow('掩膜', mask1)
cv2.waitKey()
#如果图像太大,窗口无法显示全,则自定义窗口名和窗口大小来显示图像
cv2.namedWindow("resized",0);
cv2.resizeWindow("resized", 640, 480);
cv2.imshow("resized",iamge)
cv2.waitKey(0)
#设置窗口的位置
cv2.moveWindow("winname",x,y)
#销毁窗口
cv.destroyAllWindows()#销毁窗口
#读取图像和保存图像
image=cv.imread("image.jpg")
cv.imwrite(".\image.jpg",image)#将图片保存到本目录中

你可能感兴趣的:(传统图像处理,opencv,计算机视觉,python)