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

本文介绍了如何使用Python的OpenCV库进行图像处理,包括轮廓检测、长度和面积排序、直方图均衡化、阈值化以及基本的形状识别(如最小外接圆)。
摘要由CSDN通过智能技术生成

 以下是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)#将图片保存到本目录中

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值