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

图片类网站怎样做高并发赣州人才市场最新招聘信息

图片类网站怎样做高并发,赣州人才市场最新招聘信息,wordpress域名授权系统,桥梁建设网站使用传统的计算机视觉方法定位图像中的车牌#xff0c;参考了部分网上的文章#xff0c;实际定位效果对于我目前使用的网上的图片来说还可以。实测发现对于车身本身是蓝色、或是车牌本身上方有明显边缘的情况这类图片定位效果较差。纯练手项目#xff0c;仅供参考。代码中im…        使用传统的计算机视觉方法定位图像中的车牌参考了部分网上的文章实际定位效果对于我目前使用的网上的图片来说还可以。实测发现对于车身本身是蓝色、或是车牌本身上方有明显边缘的情况这类图片定位效果较差。纯练手项目仅供参考。代码中imagePreProcess对某些图片定位率相比于imagePreProcess2做预处理的效果要好。后续可以尝试做一个如果imagePreProcess2识别无效后使用imagePreProcess再处理或者加上阈值自适应打分的机制优化。目前对于我做的练手项目来说足够了。 注意以下代码是参考了网上的一些文章后按照自己的思路写的定位效果尚可。参考的文章有python-opencv实战车牌识别一精度还不错的车牌定位_基于阈值分割的车牌定位识别-CSDN博客 https://www.cnblogs.com/fyunaru/p/12083856.html import cv2 as cv import numpy as np import matplotlib.pyplot as plt#过滤矩形的参数 minRectW 100 minRectH 50 #判断车牌颜色的参数 #一般情况下蓝色车牌H分量的值通常都在115附近徘徊 # S分量和V分量因光照不同而差异较大(opencv中H分量的取值范围是0到179而不是图像学中的0到360S分量和V分量的取值范围是到255) deltaH 15 hsvLower np.array([115 - deltaH,60,60]) hsvUpper np.array([115 deltaH,255,255])#灰度拉伸 def grayScaleStretch(img):maxGray float(img.max())minGray float(img.min())for i in range(img.shape[0]):for j in range(img.shape[1]):img[i,j] 255 / (maxGray - minGray) * (img[i,j] - minGray)return img#图像二值化 def image2Binary(img):#选取灰度最大最小值的中间值maxGray float(img.max())minGray float(img.min())threshold (minGray maxGray) / 2ret,bin cv.threshold(img, threshold, 255, cv.THRESH_BINARY)return bin#图像预处理 def imagePreProcess(img):#转换为灰度图imgGray cv.cvtColor(img, cv.COLOR_BGR2GRAY)#灰度拉伸imgGray grayScaleStretch(imgGray)#plt.imshow(imgGray, cmapgray)kernel cv.getStructuringElement(cv.MORPH_ELLIPSE, (3,3))#做开运算imgOpen cv.morphologyEx(imgGray, cv.MORPH_OPEN, kernel)#plt.imshow(imgOpen, cmapgray)#获得差分图imgDiff cv.absdiff(imgGray, imgOpen)#plt.imshow(imgDiff, cmapgray)imgDiff cv.GaussianBlur(imgDiff, (3,3), 5)#plt.imshow(imgDiff, cmapgray)#图像二值化imgBinary image2Binary(imgDiff)#plt.imshow(imgBinary, cmapgray)cannyEdges cv.Canny(imgBinary, 127, 200)#plt.imshow(cannyEdges, cmapgray)#对Canny检测边缘结果做处理kernel np.ones((3,3), np.uint8)imgOut cv.morphologyEx(cannyEdges, cv.MORPH_CLOSE, kernel)imgOut cv.dilate(imgOut, kernel, iterations1)imgOut cv.morphologyEx(imgOut, cv.MORPH_OPEN, kernel)#imgOut cv.erode(imgOut, kernel, iterations1)imgOut cv.morphologyEx(imgOut, cv.MORPH_CLOSE, kernel)#plt.imshow(imgOut, cmapgray)return imgOut#图像预处理2 - 对于某些 def imagePreProcess2(img):imgGray cv.cvtColor(img, cv.COLOR_BGR2GRAY)#灰度拉伸imgGray grayScaleStretch(imgGray)imgGray cv.GaussianBlur(imgGray, (3,3), 5)#进行边缘检测cannyEdges cv.Canny(imgGray, 180, 230)#二值化imgBinary image2Binary(cannyEdges)#plt.imshow(imgBinary, cmapgray)#先做闭运算再做开运算kernel np.ones((3,3), np.uint8)imgOut cv.morphologyEx(imgBinary, cv.MORPH_CLOSE, kernel)imgOut cv.morphologyEx(imgOut, cv.MORPH_OPEN, kernel)imgOut cv.absdiff(imgBinary, imgOut)imgOut cv.morphologyEx(imgOut, cv.MORPH_CLOSE, kernel)imgOut cv.dilate(imgOut, kernel, iterations1)plt.imshow(imgOut, cmapgray)return imgOut#debug def printHSV(hsvSrc):for i in range(hsvSrc.shape[0]):for j in range(hsvSrc.shape[1]):(h,s,v) hsvSrc[i][j]print(h,s,v)#定位车牌 def locate_plate(imgProcessing, imgOriginal):contours,hierarchy cv.findContours(imgProcessing, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)carPlateCandidates []for contour in contours:(x,y,w,h) cv.boundingRect(contour)#过滤掉一些小的矩形if (w minRectW or h minRectH):continue#cv.rectangle(imgOriginal, (int(x), int(y)), (int(x w),int(y h)), (0,255,0), 2)carPlateCandidates.append([int(x),int(y),int(x w),int(y h)])#plt.imshow(imgOriginal[:,:,::-1])maxMean 0target []target_mask []#依次检查候选车牌列表用HSV颜色空间判别是否是车牌for candidate in carPlateCandidates:(x0,y0,x1,y1) candidatecandidateROI imgOriginal[y0:y1,x0:x1]hsvROI cv.cvtColor(candidateROI, cv.COLOR_BGR2HSV)mask cv.inRange(hsvROI, hsvLower, hsvUpper)#print(mask)#plt.imshow(mask, cmapgray)#使用均值找出蓝色最多的区域mean cv.mean(mask)#print(mean)if mean[0] maxMean:maxMean mean[0]target candidatetarget_mask mask#对target的范围进行缩小找出蓝色刚开始和结束的坐标print(target_mask)nonZeroPoints cv.findNonZero(target_mask)#print(nonZeroPoints)sortByX np.sort(nonZeroPoints, axis0)xMin sortByX[0][0][0]xMax sortByX[-1][0][0]print(sortByX)sortByY np.sort(nonZeroPoints, axis1)yMin sortByY[0][0][1]yMax sortByY[-1][0][1]print(sortByY)print(X min: str(xMin) X max: str(xMax) Y min: str(yMin) Y max: str(yMax))(x0,y0,x1,y1) targetprint(Original: str(x0) , str(y0) , str(x1) , str(y1))#target (x0 xMin, y0 yMin, x0 (xMax - xMin), y0 yMax - yMin)target [x0 xMin, y0 yMin, x0 xMax, y0 yMax]return target#读取图像 imgCarPlate cv.imread(../../SampleImages/carplate/carplate_chongqing.jpg, cv.IMREAD_COLOR) #plt.imshow(imgCarPlate[:,:,::-1]) img4locate imagePreProcess2(imgCarPlate) target locate_plate(img4locate, imgCarPlate) (x0,y0,x1,y1) target cv.rectangle(imgCarPlate, (x0,y0), (x1,y1), (0,255,0), 2) plt.imshow(imgCarPlate[:,:,::-1]) 成功的例子  不太成功的例子轮廓检测的不太好并且轮廓中蓝色的值过早出现可以优化判断为连续的蓝色而不是零散的蓝色 失败的例子没能检测出小轮廓车身本身为蓝色替换为imagePreProcess后能够成功
http://www.w-s-a.com/news/99596/

相关文章:

  • 长春做网站qianceyun做景观素材有哪几个网站
  • 自己建的网站也要注册域名吗邯郸市做网站
  • 天津网站建设制作软件潍坊个人做网站
  • 重庆城市建设集团官方网站php用什么做网站服务器
  • 深圳坪山站重庆市园林建设有限公司网站
  • 网站建设图片教程如何用自己的电脑建网站
  • 《网页设计与网站建设》A卷答案广东新闻联播
  • 海南专业网站运营托管wordpress 去掉主题
  • 企业品牌网站制作甜品制作网站
  • 手机网站怎么制作影响力网站建设
  • 猪八戒网站做私活赚钱吗一尊网 又一个wordpress站点
  • 上海市做网站的公司滨州哪里做网站
  • 简单的网站建设步骤wordpress 贴吧主题
  • 金泉网做网站找谁表格做网站
  • 北京做兼职从哪个网站好江西省建设监督网站电子网
  • 什么网站做生鲜比较好安徽建设厅城乡官网
  • 域名购买网站有哪些问题上海装修网站建设
  • 找人做seo要给网站程序河北建设网网站
  • 哪家做网站性价比高wordpress最新文章链接插件
  • 维修网站怎么做移动互联网应用程序指的是什么
  • 张家界建设网站门户网站的建设原理
  • 企业通用网站模板湖南网站建设企业
  • 能看网站的视频app如何运行asp网站
  • 公司做网站还是做阿里好呢国外的旅游网站做的如何
  • 怎么做wep网站长沙seo排名公司
  • 海南网站网络推广做转运网站
  • 门户网站方案用户等待网站速度
  • 哈尔滨专业建网站方案深圳生活免费信息网
  • 检测网站是否被挂黑链wordpress 网址分享
  • 网站建设贵阳东莞网站建设策划