当前位置: 首页 > news >正文

网站维护包括哪些大二网页设计作业成品

网站维护包括哪些,大二网页设计作业成品,简单建站的网站,wordpress 无法html文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、参考 更多有趣的代码示例#xff0c;可参考【Programming】 1、功能描述 基于 opencv-python 库#xff0c;利用形态学的腐蚀和膨胀#xff0c;提取图片中的水平或者竖直线条 2、代码实现 导入基本的库函数 im… 文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、参考 更多有趣的代码示例可参考【Programming】 1、功能描述 基于 opencv-python 库利用形态学的腐蚀和膨胀提取图片中的水平或者竖直线条 2、代码实现 导入基本的库函数 import numpy as np import cv2 as cv读入图片https://raw.githubusercontent.com/opencv/opencv/5.x/doc/tutorials/imgproc/morph_lines_detection/images/src.png增加读错图片的判断机制 1.jpg def main(saveFalse):# Load the imagesrc cv.imread(./1.jpg, cv.IMREAD_COLOR)# Check if image is loaded fineif src is None:print(Error opening image)return -1可视化图片并将其转化为灰度图 # Show source imagecv.imshow(src, src)# [load_image]# [gray]# Transform source image to gray if it is not alreadyif len(src.shape) ! 2:gray cv.cvtColor(src, cv.COLOR_BGR2GRAY)else:gray srcif save:cv.imwrite(gray.jpg, gray)# Show gray imageshow_wait_destroy(gray, gray)# [gray]gray.jpg show_wait_destroy 实现如下 关闭图片后才运行后续代码 def show_wait_destroy(winname, img):cv.imshow(winname, img)cv.moveWindow(winname, 500, 0)cv.waitKey(0)cv.destroyWindow(winname)二进制求反灰度图 并自适应阈值二值化 # [bin]# Apply adaptiveThreshold at the bitwise_not of gray, notice the ~ symbolgray cv.bitwise_not(gray)if save:cv.imwrite(bitwise_not_gray.jpg, gray)bw cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_MEAN_C, \cv.THRESH_BINARY, 15, -2)if save:cv.imwrite(adaptiveThreshold.jpg, bw)# Show binary imageshow_wait_destroy(binary, bw)# [bin]bitwise_not_gray.jpg adaptiveThreshold.jpg 复制图片 adaptiveThreshold.jpg 准备提取水平线和竖直线 # [init]# Create the images that will use to extract the horizontal and vertical lineshorizontal np.copy(bw)vertical np.copy(bw)# [init]提取水平线 # [horiz]# Specify size on horizontal axiscols horizontal.shape[1] # 1024 colshorizontal_size cols // 30 # 34# Create structure element for extracting horizontal lines through morphology operationshorizontalStructure cv.getStructuringElement(cv.MORPH_RECT, (horizontal_size, 1))# Apply morphology operationshorizontal cv.erode(horizontal, horizontalStructure)if save:cv.imwrite(erode-horizontal.jpg, horizontal)horizontal cv.dilate(horizontal, horizontalStructure)if save:cv.imwrite(dilate-horizontal.jpg, horizontal)# Show extracted horizontal linesshow_wait_destroy(horizontal, horizontal)# [horiz]首先会构建结构元素 horizontalStructure定义了形态学操作的邻域形状和大小 图片列数 // 30 得到全为 1 的数组 array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], dtypeuint8)接着腐蚀操作 erode-horizontal.jpg 最后膨胀操作 dilate-horizontal.jpg 至此我们就提取到了图片中的水平方向的线条 接下来我们提取竖直方向的线条 # [vert]# Specify size on vertical axisrows vertical.shape[0] # 134verticalsize rows // 30 # 4# Create structure element for extracting vertical lines through morphology operationsverticalStructure cv.getStructuringElement(cv.MORPH_RECT, (1, verticalsize))# Apply morphology operationsvertical cv.erode(vertical, verticalStructure)if save:cv.imwrite(erode-vertical.jpg, vertical)vertical cv.dilate(vertical, verticalStructure)if save:cv.imwrite(dilate-vertical.jpg, vertical)# Show extracted vertical linesshow_wait_destroy(vertical, vertical)# [vert]同理也是先构建一个结构元素 verticalStructure array([[1],[1],[1],[1]], dtypeuint8)腐蚀 erode-vertical.jpg 膨胀 dilate-vertical.jpg 至此我们提取出了竖直方向的线条 可以拓展一下 As you can see we are almost there. However, at that point you will notice that the edges of the notes are a bit rough. For that reason we need to refine the edges in order to obtain a smoother result Extract edges and smooth image according to the logic1. extract edges2. dilate(edges)3. src.copyTo(smooth)4. blur smooth img5. smooth.copyTo(src, edges)dilate-vertical.jpg 二进制求反 # [smooth]# Inverse vertical imagevertical cv.bitwise_not(vertical)if save:cv.imwrite(bitwise_not_vertical.jpg, vertical)show_wait_destroy(vertical_bit, vertical)bitwise_not_vertical.jpg cv2.adaptiveThreshold 适应性阈值二值化 # Step 1edges cv.adaptiveThreshold(vertical, 255, cv.ADAPTIVE_THRESH_MEAN_C, \cv.THRESH_BINARY, 3, -2)if save:cv.imwrite(step1_edges.jpg, edges)show_wait_destroy(edges, edges)得到 step1_edges.jpg实现了边缘检测 看看 cv2.adaptiveThreshold 的介绍仔细分析下实现过程 dst cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)形参 C 从邻域像素的平均值或加权平均值中减去的常数配置的为负数附近颜色相近的变黑eg 纯白区域像素 255阈值 255--2257都变黑再 eg纯黑区域像素 0阈值 0--22也是黑附近颜色变动的变白黑白交替白色的部分保留黑色的部分变黑可以实现边缘提取妙 膨胀强化边缘 # Step 2kernel np.ones((2, 2), np.uint8)edges cv.dilate(edges, kernel)if save:cv.imwrite(step2_edges.jpg, edges)show_wait_destroy(dilate, edges)kernel 为 array([[1, 1],[1, 1]], dtypeuint8)step2_edges.jpg 复制 bitwise_not_vertical.jpg # Step 3smooth np.copy(vertical)模糊处理 step4_smooth.jpg # Step 4smooth cv.blur(smooth, (2, 2))if save:cv.imwrite(step4_smooth.jpg, smooth)记录下 step2_edges.jpg 中像素不为零的部分的坐标也即边缘部分坐标 边缘部分用平滑后的像素替换原来的像素 # Step 5(rows, cols) np.where(edges ! 0)vertical[rows, cols] smooth[rows, cols]# Show final resultshow_wait_destroy(smooth - final, vertical)if save:cv.imwrite(smooth_final.jpg, vertical)# [smooth]3、效果展示 输入 水平线条 竖直线条 平滑竖直线条后的结果 输入图片 水平线 竖直线 平滑竖直线条后的结果 4、完整代码 brief Use morphology transformations for extracting horizontal and vertical lines sample codeimport numpy as np import cv2 as cvdef show_wait_destroy(winname, img):cv.imshow(winname, img)cv.moveWindow(winname, 500, 0)cv.waitKey(0)cv.destroyWindow(winname)def main(saveFalse):# Load the imagesrc cv.imread(./1.jpg, cv.IMREAD_COLOR)# Check if image is loaded fineif src is None:print(Error opening image)return -1# Show source imagecv.imshow(src, src)# [load_image]# [gray]# Transform source image to gray if it is not alreadyif len(src.shape) ! 2:gray cv.cvtColor(src, cv.COLOR_BGR2GRAY)else:gray srcif save:cv.imwrite(gray.jpg, gray)# Show gray imageshow_wait_destroy(gray, gray)# [gray]# [bin]# Apply adaptiveThreshold at the bitwise_not of gray, notice the ~ symbolgray cv.bitwise_not(gray) # (134, 1024)if save:cv.imwrite(bitwise_not_gray.jpg, gray)bw cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_MEAN_C, \cv.THRESH_BINARY, 15, -2)if save:cv.imwrite(adaptiveThreshold.jpg, bw)# Show binary imageshow_wait_destroy(binary, bw)# [bin]# [init]# Create the images that will use to extract the horizontal and vertical lineshorizontal np.copy(bw)vertical np.copy(bw)# [init]# [horiz]# Specify size on horizontal axiscols horizontal.shape[1] # 1024 colshorizontal_size cols // 30 # 34# Create structure element for extracting horizontal lines through morphology operationshorizontalStructure cv.getStructuringElement(cv.MORPH_RECT, (horizontal_size, 1))# Apply morphology operationshorizontal cv.erode(horizontal, horizontalStructure)if save:cv.imwrite(erode-horizontal.jpg, horizontal)horizontal cv.dilate(horizontal, horizontalStructure)if save:cv.imwrite(dilate-horizontal.jpg, horizontal)# Show extracted horizontal linesshow_wait_destroy(horizontal, horizontal)# [horiz]# [vert]# Specify size on vertical axisrows vertical.shape[0] # 134verticalsize rows // 30 # 4# Create structure element for extracting vertical lines through morphology operationsverticalStructure cv.getStructuringElement(cv.MORPH_RECT, (1, verticalsize))# Apply morphology operationsvertical cv.erode(vertical, verticalStructure)if save:cv.imwrite(erode-vertical.jpg, vertical)vertical cv.dilate(vertical, verticalStructure)if save:cv.imwrite(dilate-vertical.jpg, vertical)# Show extracted vertical linesshow_wait_destroy(vertical, vertical)# [vert]# [smooth]# Inverse vertical imagevertical cv.bitwise_not(vertical)if save:cv.imwrite(bitwise_not_vertical.jpg, vertical)show_wait_destroy(vertical_bit, vertical)Extract edges and smooth image according to the logic1. extract edges2. dilate(edges)3. src.copyTo(smooth)4. blur smooth img5. smooth.copyTo(src, edges)# Step 1edges cv.adaptiveThreshold(vertical, 255, cv.ADAPTIVE_THRESH_MEAN_C, \cv.THRESH_BINARY, 3, -2)if save:cv.imwrite(step1_edges.jpg, edges)show_wait_destroy(edges, edges)# Step 2kernel np.ones((2, 2), np.uint8)edges cv.dilate(edges, kernel)if save:cv.imwrite(step2_edges.jpg, edges)show_wait_destroy(dilate, edges)# Step 3smooth np.copy(vertical)# Step 4smooth cv.blur(smooth, (2, 2))if save:cv.imwrite(step4_smooth.jpg, smooth)# Step 5(rows, cols) np.where(edges ! 0)vertical[rows, cols] smooth[rows, cols]# Show final resultshow_wait_destroy(smooth - final, vertical)if save:cv.imwrite(smooth_final.jpg, vertical)# [smooth]return 0if __name__ __main__:main(saveTrue)5、参考 Extract horizontal and vertical lines by using morphological operations 更多有趣的代码示例可参考【Programming】
http://www.dnsts.com.cn/news/170815.html

相关文章:

  • 做网赌网站怎么推广建设工程交易中心网站
  • 手机网站建设哪家强遂昌建设局网站
  • 公司网站制作公司用asp做的网站
  • 网站源码上传图片出错淘宝网页制作教程
  • 东莞网站建设+信科网络wordpress奖励插件
  • 跨境电商建站工具专业做网站较好的公司广州
  • 天津集体建设用地出售 网站wordpress用户前端发文
  • 做兼职在什么网站找比较好浙江省建设培训中心网
  • 文化产品电商网站建设规划sqlite 网站开发
  • 网站开发组件拖拽适用于个人网站的域名
  • 建设网站微商城wordpress 插件 错误
  • 网站哪里有做的什么网站做美式软装设计方案
  • 100个免费推广网站的排名河北廊坊百度建站
  • 微商怎么开通wordpress 数据库优化插件
  • 设计网站的一般过程自己在线制作logo
  • 佛山新网站建设平台网站备案填写网站名称
  • 江西网站制作的公司哪家好wordpress dota主题
  • 网站开发用什么技术那个大学业做网站
  • 台州椒江做网站阿里云服务器建立网站吗
  • 百度提交网站收录wordpress自动电影釆集
  • 长安网站建设好吗网站建设这块是怎么挣钱的
  • 手机网站制作教程视频seo外推上排名
  • 营销型网站建设设计服务android 网站开发
  • 广州在线网站制作推荐龙岗网站app建设
  • 深圳网站建设制作设计国企设计公司有哪些
  • 网站建设公司推广方式专业制作网站的基本步骤
  • 网站建设合同的注意事项网站建设综合实训总结
  • 网站设计报告模板及范文郑州东区做网站电话
  • 服装设计公司背景外贸seo是什么意思
  • 句容网站建设公司苏州网站建设书生商友