郑州那里能设计网站白沙网站建设的基本情况

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

郑州那里能设计网站,白沙网站建设的基本情况,html作业代码,潍坊大型网站建设题目1.读取一张彩色图像并将其转换为灰度图。 import cv2

读取图片文件

img cv2.imread(./1.png)# 将原图灰度化 img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 输出图片 cv2.imshow(img,img) cv2.imshow(img_g,img_gray)

进行阻塞

cv2.waitKey(0) 题目2#xff1a;…题目1.读取一张彩色图像并将其转换为灰度图。 import cv2

读取图片文件

img cv2.imread(./1.png)# 将原图灰度化 img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 输出图片 cv2.imshow(img,img) cv2.imshow(img_g,img_gray)

进行阻塞

cv2.waitKey(0) 题目2二值化与形态学操作‌ 编写程序读取一张彩色图像【flower.png】将其转换为灰度图然后进行二值化处理。 接着对二值化后的图像执行腐蚀和膨胀操作并显示处理前后的图像。 二值化图像 腐蚀图像 膨胀图像 ‌题目3图像变换与颜色识别‌ 编写程序读取一张彩色图像执行以下操作 将图像缩放至指定大小例如宽度和高度都缩小为原来的一半。对缩放后的图像应用仿射变换实现图像的旋转例如旋转45度。将图像从BGR颜色空间转换为HSV颜色空间并提取出特定的颜色范围例如提取黄色区域。显示处理后的图像并在图像上标记出识别到的颜色区域。 import cv2 import numpy as npimg cv2.imread(./2.png) img cv2.resize(img,dsizeNone,fx0.5,fy0.5)# 获取放射变换矩阵 M cv2.getRotationMatrix2D(center(img.shape[1]/2,img.shape[0]/2), # 旋转的中心angle45, # 旋转的角度scale0.5) # 缩放 返回一个旋转矩阵img_ro cv2.warpAffine(img,M,(img.shape[0],img.shape[1]),flags cv2.INTER_LINEAR, # 插值的方式borderModecv2.BORDER_REFLECT_101) # 填充边缘的方式# 将原图转换成hsv img_hsv cv2.cvtColor(img_ro,cv2.COLOR_BGR2HSV)

制作掩膜

选取颜色 这里选择黄色

hsv_min np.array([26,43,46],dtypenp.float32) hsv_max np.array([34,255,255],dtypenp.float32) mask cv2.inRange(img_hsv,hsv_min,hsv_max)# 将掩膜与原图进行与运算 img_color cv2.bitwise_and(img_ro,img_ro,maskmask)# 利用掩膜识别边缘 c,h cv2.findContours(mask,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)#用红线在原图标识 cv2.drawContours(img_ro,c,-1,(0,0,255),2)cv2.imshow(image,img_ro) cv2.imshow(img_color,img_color) cv2.waitKey(0) ‌题目4图像矫正 编写程序读取一张彩色图像执行以下操作 找到原图 和目标图的四个点获取透视变换矩阵对图像应用透视变换实现油画区域的矫正 import cv2 import numpy as np# 读取图像 img cv2.imread(./youhua.png)

高斯滤波

img_blur cv2.GaussianBlur(img,(3,3),1)# 灰度化 img_gray cv2.cvtColor(img_blur,cv2.COLOR_BGR2GRAY)# 二值化 _,img_binary cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY_INVcv2.THRESHOTSU)# 寻找轮廓 contours, cv2.findContours(img_binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnt sorted(contours,keycv2.contourArea,reverseTrue)[0] img_copy img.copy()img_copy cv2.drawContours(img_copy,[cnt],-1,(0,0,255),2)# 找到card的轮廓 做多边形逼近 获取四个顶点 arc_len cv2.arcLength(cnt,True) approx cv2.approxPolyDP(cnt,float(0.04)*arc_len,True) img_draw img.copy()

approxpoints1 np.float32(approx).reshape(-1,2)

print(approx) points2 np.float32([[max(points1[:, 0]), min(points1[:, 1])], # 右上角[min(points1[:, 0]), min(points1[:, 1])], # 左上角[min(points1[:, 0]), max(points1[:, 1])], # 左下角[max(points1[:, 0]), max(points1[:, 1])], # 右下角])M cv2.getPerspectiveTransform(points1,points2) img_draw cv2.warpPerspective(img_draw,M,(img.shape[1],img.shape[0]))# 画轮廓# 获取透视变换矩阵

进行透视变换# 输出图形

cv2.imshow(img,img) cv2.imshow(img_copy,img_copy) cv2.imshow(img_draw,img_draw) cv2.waitKey(0) 题目5边缘检测 请编写一段Python代码使用OpenCV库对一张图像进行以下处理 将图像转换为灰度图。使用高斯滤波器平滑图像内核大小为5x5标准差为1。使用Canny边缘检测算法检测图像边缘阈值1为50阈值2为150。在检测到的边缘图像上绘制轮廓轮廓颜色为红色厚度为2。 import cv2 img cv2.imread(./picture.png)

灰度化

img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 高斯滤波 img_blur cv2.GaussianBlur(img_gray,(5,5),1)

边缘检测

img_canny cv2.Canny(img_blur,50,150) c,h cv2.findContours(img_canny,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(img,c,-1,(0,0,255),2)cv2.imshow(image,img)cv2.imshow(img_canny,img_canny) cv2.waitKey(0) 题目6车牌识别预处理  假设你正在开发一个车牌识别系统首先需要从图像中识别出车牌区域。请描述并编写代码实现以下步骤 读取一张包含车牌的图像。将图像转换为灰度图以简化处理。使用高斯滤波器平滑图像减少噪声干扰。应用Canny边缘检测算法检测图像中的边缘。查找图像中的轮廓。逐一遍历轮廓。设定一个面积双阈值只保留面积在该阈值的轮廓。计算这些轮廓的长宽比长宽比ratio在2到5.5之间的在原图上用矩形框标出这些轮廓可能是车牌的候选区域。 import cv2 import matplotlib.pyplot as plt import numpy as np# 读取车牌图像 img cv2.imread(./img_1.png)# 转化为单通道图像便于处理 img cv2.resize(img,dsizeNone,fx0.5,fy0.5)img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 使用高斯滤波平滑图像减少噪声干扰 img_blur cv2.GaussianBlur(img_gray,(5,5),1)# 使用canny检测图像边缘 img_canny cv2.Canny(imgblur,50,150)# 查找轮廓点集 c, cv2.findContours(img_canny,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

遍历轮廓 寻找面积合适的图像

for cnt in c:if cv2.contourArea(cnt)900 or cv2.contourArea(cnt)81000000:continueelse:# 计算长宽比arc_len cv2.arcLength(cnt, # 轮廓True) # 表示轮廓是否闭合approx cv2.approxPolyDP(cnt, # 轮廓float(0.004) * arc_len, # 这是从原始轮廓到近似多边形的最大距离决定了逼近精度True # 是否闭合) # 返回逼近多边形的 坐标点集x, y, w, h cv2.boundingRect(approx)ratio w / hif 2.0 ratio 4.5: # 设定范围减免因图像扭曲产生的误差cv2.rectangle(img,[x, y], # 左上角坐标[x w, y h], # 右下角坐标(0, 0, 255), # 矩形颜色2 # 矩形线条粗细)cv2.imshow(img,img) cv2.imshow(img_b, img_canny) cv2.waitKey(0) 交通信号灯识别‌ 你正在开发一个自动驾驶系统需要识别交通信号灯的颜色红、黄、绿。请设计一个简化的流程说明如何使用OpenCV来识别交通信号灯的颜色。 思路分析‌ 读取包含交通信号灯的图像。转换图像到HSV颜色空间。分别为红、黄、绿三种颜色定义HSV范围并创建三个掩膜。对每个掩膜进行轮廓检测识别出可能的信号灯区域。 import cv2 import numpy as np img cv2.imread(./demo111.png)# 转化hsv空间 img_hsv cv2.cvtColor(img,cv2.COLOR_BGR2HSV)# 红色空间 hsv_min2 np.array([0,43,46]) hsv_max2 np.array([10,255,255]) hsv_min1 np.array([156,43,46]) hsv_max1 np.array([180,255,255]) mask_1 cv2.inRange(img_hsv,hsv_min1,hsv_max1) mask_2 cv2.inRange(img_hsv,hsv_min2,hsv_max2) mask_red cv2.bitwise_or(mask_1,mask_2) mask_red cv2.GaussianBlur(maskred,(3,3),1) c, cv2.findContours(mask_red,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) c sorted(c,keycv2.contourArea,reverseTrue)[1] img cv2.drawContours(img,[c],-1,(0,0,255),2)# 绿色空间 hsv_min3 np.array([35,43,46]) hsv_max3 np.array([99,255,255]) mask_green cv2.inRange(img_hsv,hsv_min3,hsv_max3) mask_green cv2.GaussianBlur(maskgreen,(3,3),1) c, cv2.findContours(mask_green,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) c sorted(c,keycv2.contourArea,reverseTrue)[0] img cv2.drawContours(img,[c],-1,(0,255,0),2)# 黄色空间 hsv_min4 np.array([11,20,20]) hsv_max4 np.array([34,255,255]) mask_yellow cv2.inRange(img_hsv,hsv_min4,hsv_max4) mask_yellow cv2.GaussianBlur(maskyellow,(3,3),1) c, cv2.findContours(mask_yellow,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) c sorted(c,keycv2.contourArea,reverseTrue)[0] img cv2.drawContours(img,[c],-1,(0,255,255),2)mask cv2.bitwise_or(mask_red,mask_yellow,mask_green) img_mask_color cv2.bitwise_and(img,img,maskmask)cv2.imshow(image,img) cv2.imshow(mask,mask) cv2.imshow(img_mask_color,img_mask_color)cv2.waitKey(0) 在一家生产彩色玩具的工厂中需要检测产品是否按照正确的颜色进行生产。请设计一个使用OpenCV的自动化检测系统该系统能够识别并报告不符合颜色标准的产品。 ‌思路分析‌ 设定产品的标准颜色范围HSV值。使用摄像头或图像文件获取待检测产品的图像。转换图像到HSV颜色空间。为每种标准颜色创建掩膜并与产品图像进行比对。识别出颜色不符合标准的产品并记录或报告。 import cv2 import numpy as np img cv2.imread(./duck.png) img cv2.resize(img,dsizeNone,fx0.4,fy0.4)

转化hsv空间

img_hsv cv2.cvtColor(img,cv2.COLOR_BGR2HSV)# 红色空间 hsv_min2 np.array([0,43,46]) hsv_max2 np.array([10,255,255]) hsv_min1 np.array([156,43,46]) hsv_max1 np.array([180,255,255]) mask_1 cv2.inRange(img_hsv,hsv_min1,hsv_max1) mask_2 cv2.inRange(img_hsv,hsv_min2,hsv_max2) mask_red cv2.bitwise_or(mask_1,mask_2) mask_red cv2.GaussianBlur(mask_red,(3,3),1)# 绿色空间 hsv_min3 np.array([35,43,46]) hsv_max3 np.array([99,255,255]) mask_green cv2.inRange(img_hsv,hsv_min3,hsv_max3) mask_green cv2.GaussianBlur(mask_green,(3,3),1)# 黑色空间 hsv_min3 np.array([0,0,40]) hsv_max3 np.array([180,255,46]) mask_black cv2.inRange(img_hsv,hsv_min3,hsv_max3) mask_black cv2.GaussianBlur(mask_black,(3,3),1)# 蓝色空间 hsv_min3 np.array([78,43,46]) hsv_max3 np.array([124,255,255]) mask_blue cv2.inRange(img_hsv,hsv_min3,hsv_max3) mask_blue cv2.GaussianBlur(mask_blue,(3,3),1)mask cv2.bitwise_or(mask_red,mask_black) mask1 cv2.bitwise_or(mask_blue,mask_green) mask cv2.bitwise_or(mask1,mask) mask_color cv2.bitwiseand(img,img,maskmask)c, cv2.findContours(mask,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)for cnt in c:M cv2.moments(cnt)if cv2.contourArea(cnt)700:continueelse:ret cv2.minAreaRect(cnt)# 调用box获取该外接矩形大的四个顶点box np.int32(cv2.boxPoints(ret))img cv2.drawContours(img, [box], -1, (0,255 , 255), 2)# 先计算轮廓形状的中心坐标cX int(M[m10]/M[m00])cY int(M[m01]/M[m00])# 将识别到的轮廓形状的文字写道轮廓的重点处youhua.pngcv2.putText(img, # 图片NO, # 要添加的文字字符串(cX,cY), # 要输入文字的坐标cv2.FONT_HERSHEY_SIMPLEX,# 字体类型0.4, # 缩放(0,255,255))cv2.imshow(image,img) cv2.imshow(mask,mask) cv2.imshow(img_mask_color,mask_color)cv2.waitKey(0) 图像预处理与特征提取‌ 将图像转换为灰度图对灰度图进行二值化处理使用形态学变换去除噪声【开运算】检测图像中的边缘查找并绘制图像中的轮廓逐一遍历轮廓输出所有四边形的周长 和 面积。 import cv2 import numpy as np# 读取图片 img cv2.imread(./img_2.png)# 灰度化 二值化 img_gary cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) _,img_binary cv2.threshold(img_gary,127,255,cv2.THRESH_BINARY_INVcv2.THRESH_OTSU)# 高斯滤波 img_blur cv2.GaussianBlur(img_binary,(3,3),1)# 开运算消除噪点 腐蚀和膨胀 kernel cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5)) img_erode cv2.erode(img_blur,kernel) img_dilate cv2.dilate(imgerode,kernel)# 寻找轮廓 contours, cv2.findContours(img_dilate,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)# 绘制轮廓 img_copy img.copy()# 循环遍历轮廓 for cnt in contours:M cv2.moments(cnt)if int(M[m00] ) 0:continueelse:# 排序非常小的轮廓后寻找与图形相似形状# 把周长的几倍长度的线段作为一条边arc_len cv2.arcLength(cnt, # 轮廓True) # 表示轮廓是否闭合approx cv2.approxPolyDP(cnt, # 轮廓float(0.04)*arc_len, #这是从原始轮廓到近似多边形的最大距离决定了逼近精度True # 是否闭合) # 返回逼近多边形的 坐标点集# 进行形状判断if len(approx) 4:# 需要进一步判断是正方形还是非正方形x,y,w,h cv2.boundingRect(approx)ratio w/hshape rectanglecolor (0,255,0)img_copy cv2.drawContours(img_copy, contours, -1, (0, 0, 0), 1)str1 shapearea:str(cv2.contourArea(cnt))str2 len:str(cv2.arcLength(cnt,True))# 先计算轮廓形状的中心坐标cX int(M[m10]/M[m00])cY int(M[m01]/M[m00])# 将识别到的轮廓形状的文字写道轮廓的重点处youhua.pngcv2.putText(img_copy, # 图片str1, # 要添加的文字字符串(cX,cY), # 要输入文字的坐标cv2.FONT_HERSHEY_SIMPLEX,# 字体类型0.4, # 缩放color)cv2.putText(img_copy, # 图片str2, # 要添加的文字字符串(cX, cY15), # 要输入文字的坐标cv2.FONT_HERSHEY_SIMPLEX, # 字体类型0.4, # 缩放color)# 输出数据 cv2.imshow(image,img) cv2.imshow(img_copy,img_copy) cv2.waitKey(0)