python裂缝检测_通过opencv-python检测裂缝
import cv2 as cv
import cv2
import numpy as np
import time
from matplotlib import pyplot as plt
value = 60
value1 = 0
canny_min = 100
canny_max = 150
minlineLength = 200
maxlineGap = 10
area_threshold = 90
#用于去除杂点
def removeLittlePoint(img,threshold):
image, contours, hierarch = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for i in range(len(contours)):
area = cv2.contourArea(contours[i])
if area < threshold:
cv2.drawContours(image, [contours[i]], 0, 0, cv2.FILLED)
return image
def callback(object):
global value,value1,src2,src2_copy,src,minlineLength,maxlineGap,canny_max,canny_min,area_threshold
src2[:,:] = src2_copy[:,:]
#得到滑动条对应的值
value = cv2.getTrackbarPos('value', 'adapative')
value1 = cv2.getTrackbarPos('value1', 'adapative')
canny_min = cv2.getTrackbarPos('canny_min', 'adapative')
canny_max = cv2.getTrackbarPos('canny_max', 'adapative')
minlineLength = cv2.getTrackbarPos('minlineLength', 'adapative')
maxlineGap = cv2.getTrackbarPos('maxlineGap', 'adapative')
area_threshold = cv2.getTrackbarPos('area_threshold', 'adapative')
src = cv2.bilateralFilter(src2, 11, value, value1)
cv2.imshow("src", src)
src = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
roi = cv2.adaptiveThreshold(src, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, \
cv2.THRESH_BINARY, 11, 3)
mask = np.ones((3, 1), np.uint8)
roi = cv2.morphologyEx(roi, cv2.MORPH_OPEN, mask, iterations=2)
roi = cv2.bitwise_not(roi)
roi = cv2.medianBlur(roi, 3,)
cv2.imshow('roi', roi)
roi_all = cv2.resize(roi, (round(roi.shape[1]/6), round(roi.shape[0]/6)))
cv2.imshow('roi_all', roi_all)
roi_canny = cv2.Canny(roi, canny_min, canny_max)
roi_canny = cv2.resize(roi_canny, (round(roi_canny.shape[1] ), round(roi_canny.shape[0] )))
cv2.imshow('roi_gray', roi_canny)
oshow = roi_canny.copy()
oshow = cv2.cvtColor(roi_canny, cv2.COLOR_GRAY2BGR)
draw = np.zeros((roi_canny.shape[0],roi_canny.shape[1]), dtype=np.uint8)
#霍夫直线检测,并绘出
lines = cv2.HoughLines(roi_canny, 1, np.pi / 180, 1000)
print(len(lines))
for line in lines:
rho, theta = line[0]
a = np.cos(theta)
b = np.sin(theta)
x0 = a * rho
y0 = b * rho
x1 = int(x0 + 10000 * (-b))
y1 = int(y0 + 10000 * (a))
x2 = int(x0 - 10000 * (-b))
y2 = int(y0 - 10000 * (a))
cv2.line(oshow, (x1, y1), (x2, y2), (0, 0, 255), 6,cv2.LINE_AA)
cv2.line(draw, (x1, y1), (x2, y2), 255, 6, cv2.LINE_AA)
oshow1 = cv2.resize(oshow, (round(oshow.shape[1] / 6), round(oshow.shape[0] / 6)))
cv2.imshow('oshow', oshow1)
kernel = np.ones((3, 3), np.uint8)
dilation = cv2.dilate(oshow, kernel, iterations=6)
draw = cv2.dilate(draw, kernel, iterations=6)
dilation_all = cv2.resize(dilation, (round(dilation.shape[1] / 6), round(dilation.shape[0] / 6)))
cv2.imshow('dilation_all', dilation_all)
cv2.imshow('dilation', dilation)
cv2.imshow('draw', draw)
output = cv2.bitwise_and(draw, roi)
result = roi[:, :] - output[:, :]
output1 = cv2.resize(output, (round(output.shape[1]/6), round(output.shape[0]/6)))
cv2.imshow('output', output1)
result1 = cv2.resize(result, (round(result.shape[1]/6), round(result.shape[0]/6)))
cv2.imshow('result', result1)
new_result = removeLittlePoint(result, area_threshold)
new_result1 = cv2.resize(new_result, (round(new_result.shape[1] / 6), round(new_result.shape[0] / 6)))
cv2.imshow('new_result1', new_result1)
#这个没用的
# lines = cv2.HoughLinesP(roi, 1, np.pi/180, 1, minLineLength=minlineLength, maxLineGap=maxlineGap)
# print(len(lines))
#
# for line in lines:
# x1,y1,x2,y2 = line[0]
# cv2.line(oshow,(x1,y1),(x2,y2),(255,0,0),5)
# cv2.imshow('oshow', oshow)
#Sobely = cv2.Sobel(roi, cv2.CV_64F, 0, 1)
#Sobely = cv2.convertScaleAbs(Sobely)
#cv2.imshow('sobely',Sobely)
dianpianwrong = cv.imread("E:/python_opencv_demo/dianPianTest/ELtestpicture/ELtestPicture/ok/P402202008310005.jpg")
src2 = dianpianwrong.copy()
dianpianwrong = cv2.resize(dianpianwrong, (round(dianpianwrong.shape[1]/6 ), round(dianpianwrong.shape[0]/6 )))
print("src.shape", src2.shape)
cv2.imshow("origon-picture", dianpianwrong)
src2_copy = np.zeros((src2.shape[0], src2.shape[1],3), np.uint8)
src2_copy[:, :] = src2[:, :]
cv2.namedWindow("adapative", cv2.WINDOW_AUTOSIZE)
#用于创建滑动条便于调试
cv2.createTrackbar('value', 'adapative', value, 255, callback)
cv2.createTrackbar('value1', 'adapative', value1, 255, callback)
cv2.createTrackbar('canny_min', 'adapative', canny_min, 255, callback)
cv2.createTrackbar('canny_max', 'adapative', canny_max, 255, callback)
cv2.createTrackbar('minlineLength', 'adapative', minlineLength, 255, callback)
cv2.createTrackbar('maxlineGap', 'adapative', maxlineGap, 255, callback)
cv2.createTrackbar('area_threshold', 'adapative', area_threshold, 255, callback)
cv2.waitKey(0)
原文链接:https://blog.csdn.net/weixin_44289316/article/details/109178506
python裂缝检测_通过opencv-python检测裂缝相关推荐
- opencv和python的区别_所有这些OpenCV Python接口之间有何不同?
拉风的咖菲猫 OpenCV正式发布了两种类型的Python接口,cv和cv2.简历:我开始工作cv.这样,所有OpenCV数据类型都将保留下来.例如,加载时,图像的格式cvMat与C ++中的相同.对 ...
- python笔记图片_图像 opencv - python笔记
默认 基础变换 模糊 锐化 色彩分层 傅里叶变换 高通低通 图像序列转换为视频 人脸识别 import opencv as cv2 img = cv2.imread('test.jpg') # imw ...
- python凹多边形分割_使用Opencv python从Image中裁剪凹面多边形
Steps find region using the poly points create mask using the poly points do mask op to crop add whi ...
- python布尔表达式模板_使用OpenCV python从手绘逻辑门图中生成布尔表达式
您的项目看起来很酷,所以我花了一些时间寻找解决方案.我在下面的代码.代码的结果是: OUTPUT[XNOR[NOR[AND[B,A],OR[D,C]],XOR[NOT[G],NAND[E,F]]]] ...
- opencv 人脸识别_人工智能-OpenCV+Python实现人脸识别(视频人脸检测)
上期文章我们分享了opencv识别图片中的人脸,OpenCV图片人脸检测,本期我们分享一下如何从视频中检测到人脸 视频人脸检测 OpenCV打开摄像头特别简单,只需要如下一句代码 capture = ...
- 【yolov3目标检测】(3) opencv+yolov3 检测交通路况,附python完整代码
各位同学好,今天和大家分享一下如何使用 opencv 调用 yolov3 模型,加载网络权重,很方便地实现 yolov3 目标检测.先放张图看效果. 使用的网上找的行车记录仪视频做测试,数据集采用CO ...
- dlib疲劳检测_使用OpenCv和Dlib进行打哈欠检测
OpenCV: OpenCV是一个用于计算机视觉的库函数,最初是用c++编写的. Dlib: Dlib是一个Python库,包含了数据挖掘.数据结构.机器学习.图像处理等工具. 打哈欠检测与应用 打哈 ...
- python opencv显示图片一闪而过_解决Opencv+Python cv2.imshow闪退问题
Opencv+Python cv2.imshow闪退 # 读入原始图像 origineImage = cv2.imread('./pic/6.jpeg') # 图像灰度化 # image = cv2. ...
- python数控机器人_科研一角|Python语言在人工智能加工中心机器人方面的应用
原标题:科研一角|Python语言在人工智能加工中心机器人方面的应用 科研一角|Python语言在人工智能加工中心机器人方面的应用 (一)Python在智能机器人编程技术中的应用 用Python编写的 ...
- 怎么安装python的包_『本地python包怎么通过pyenv安装』python包本地安装教程
python怎么安装第三方类库 pip 大多数库都可以通pip安装,安装方法为,令行窗口输入 pip install libname libname名 某些库通过pip安装不了,可能是因为没有打包上传 ...
最新文章
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20170314
- EXCEL中显示年月日时分秒
- Web前端开发笔记——第四章 JavaScript程序设计 第三节 数据类型
- Docker容器安全性分析
- windows 笔记本连接公共wifi不弹出登录页面的处理办法
- springcould结合springbboot微服务 开发@^——^@ 模式讲解
- 帮公司人事MM做了个工资条拆分工具
- Mybatis批量insert报错的解决办法【the right syntax to use near '' at line...】
- dnsever 邮件记录
- ORB-SLAM2代码详解
- The Nicest Word(io优化)
- 记录一次idea启动失败问题Improperly specified VM option. To fix the problem, edit your JVM options and remove t
- Chrome 推荐几款小说、文案阅读免费插件(UI体验相对不错)
- 写给喜欢数学和不喜欢数学的朋友们
- IDEA设置类注解模板
- oschina使用pages
- 爬虫beautifulsoup爬取豆瓣读书数据
- 常用docker镜像
- 华为eNSP配置防火墙进入web界面
- R语言学习——安装R语言,安装RStudio