第一次接单

第一步先读图

原图

从原图中发现,此图对比度较差,所以应该先读出灰度图,然后再做处理。

img = cv2.imread('/Users/qiaoye/Desktop/9.9.jpg')

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


    es_limao = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (4,4))
    es_dingmao = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (13, 13))

初始化了两个卷积核,方便后边调用

因为原图的对比度较差,所以这里采用了直方图归一化的方法,增加图像的对比度,尤其是螺母的对比度

img_gray = cv2.normalize(img_gray_yuantu,None,0,255,cv2.NORM_MINMAX)

之后用均值滤波,过滤椒盐噪声

img_gray = cv2.medianBlur(img_gray,7)
    cv_show('img',img_gray)
均值滤波后的图像

之后是对图像进行自适应阈值处理

 img_gray = cv2.adaptiveThreshold(img_gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 5, 2)
 img_gray = cv2.medianBlur(img_gray,5) #降噪
cv_show('img_thre',img_gray)、

动态阈值处理

可以发现动态处理后的效果非常棒

因为我是习惯检测点是白的,所以做了一步这样的处理

img_gray = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY_INV)[1]
  cv_show('ig',img_gray)
白黑转换

之后用闭操作进行处理,因为有的地方的点不是很清楚就用了闭操作

 img_gray = cv2.morphologyEx(img_gray,cv2.MORPH_CLOSE,(3,3))
    cv_show('img_ec',img_gray)
img_gray = cv2.morphologyEx(img_gray,cv2.MORPH_CLOSE,(4,4))

    cv_show('close_',img_gray)

不清晰的点也变的清晰了

之后是用findcounter查找框

cnts1,hierarchy = cv2.findContours(img_gray.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

    #cnts,hierarchy = cv2.findContours(img_gray_yuantu.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

    cnts = cnts1

    cur_img = img

    #cv2.drawContours(img,cnts,-1,(0,255,0),1)
    #cv2.drawContours(cur_img,cnts1,-1,(0,255,0),1)

    cv_show('img_count_qie',cur_img)

    #cv_show('img_yuantu',img_gray_yuantu)


    for c in cnts:

        s = cv2.contourArea(c)
        #s = cv2.arcLength(c,True)
        (x, y), radius = cv2.minEnclosingCircle(c)
        if y > 24 and (x < 498 and x > 20):
            if abs((y-290)/(x-22)) < 1.7 or y > 290:
                if s < 45:
                    #x,y,w,h = cv2.boundingRect(c)
                    (x,y),radius = cv2.minEnclosingCircle(c)
                    center = (int(x),int(y-radius))
                    radius = int(radius)
                    img = cv2.circle(img,center,radius,(x,s,y),5)
                    #cv2.rectangle(img, (x, y), (x+w , y - h), (x+h, w+y, y+x), 5)

    cv_show('img',img)

结果

在查找过程中,因为有很多的噪音点,试了很多的办法,最后只能用了斜率的方法给解决了,真的是服气我自己 哈哈

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 7094-吾爱庐 昨天上午用文字与朋友聊聊,先告诉她我的个人情况,然后再发给她项目表,之后就没有回信了,我想被师姐...
    吾爱庐阅读 284评论 3 5
  • 在简书上看到有人说可以加群接单写作,依推荐加了几个群。早上在其中一个群看到这样的任务清单: 我是个资深历史迷,一眼...
    远方_ad65阅读 18,262评论 83 293
  • 前两天接了一个写酒吧活动推文的单子,挣了了330元。 最开始对方在找人的时候,我还一直在犹豫要不要接单,因为自己从...
    o左手写爱o阅读 5,008评论 37 74
  • 7文/吾爱庐 丑媳妇总要见公婆,学了那么多知识总要落地,知识不用等于死知识,既然定位健康管理师,总要与市场接轨,今...
    吾爱庐阅读 727评论 0 1
  • 上周在简书浏览时,看到有简友在豆瓣银行接单写稿赚稿费。抱着试一试的态度,今天也在上面接了一个单。 稿子是写关于领导...
    河狸妈妈育儿阅读 1,528评论 0 1