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

北京网站制作官网网站建设营销排名方案

北京网站制作官网,网站建设营销排名方案,WordPress底部添加音乐,深圳seo排名哪家好Python中使用opencv-python库进行颜色检测 之前写过一篇VC中使用OpenCV进行颜色检测的博文#xff0c;当然使用opencv-python库也可以实现。 在Python中使用opencv-python库进行颜色检测非常简单#xff0c;首选读取一张彩色图像#xff0c;并调用函数imgHSV cv2.cvtColor…Python中使用opencv-python库进行颜色检测 之前写过一篇VC中使用OpenCV进行颜色检测的博文当然使用opencv-python库也可以实现。 在Python中使用opencv-python库进行颜色检测非常简单首选读取一张彩色图像并调用函数imgHSV cv2.cvtColor(img,cv2.COLOR_BGR2HSV);函数将原图img转换成HSV图像imgHSV再设置好HSV三个分量的上限和下限值调用inRange函数imask cv2.inRange(imgHSV,lower,upper)将HSV色彩图像转换成掩码图掩码图中只有黑白二值图像从而达到颜色检测的目的。颜色检测通常可以用于物体检测和跟踪中尤其在不同的图像和物体中根据特定的颜色去筛选出某个物体。 通过学习油管博主murtazahassan的视频LEARN OPENCV in 3 HOURS with Python | Including 3xProjects | Computer Vision里面第7个OpenCV示例将到如何从一副兰博基尼的轿车图像中进行颜色检测相关代码地址为:Learn-OpenCV-in-3-hours /chapter7.py 如下所示 import cv2 import numpy as npdef empty(a):passdef stackImages(scale,imgArray):rows len(imgArray)cols len(imgArray[0])rowsAvailable isinstance(imgArray[0], list)width imgArray[0][0].shape[1]height imgArray[0][0].shape[0]if rowsAvailable:for x in range ( 0, rows):for y in range(0, cols):if imgArray[x][y].shape[:2] imgArray[0][0].shape [:2]:imgArray[x][y] cv2.resize(imgArray[x][y], (0, 0), None, scale, scale)else:imgArray[x][y] cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), None, scale, scale)if len(imgArray[x][y].shape) 2: imgArray[x][y] cv2.cvtColor( imgArray[x][y], cv2.COLOR_GRAY2BGR)imageBlank np.zeros((height, width, 3), np.uint8)hor [imageBlank]*rowshor_con [imageBlank]*rowsfor x in range(0, rows):hor[x] np.hstack(imgArray[x])ver np.vstack(hor)else:for x in range(0, rows):if imgArray[x].shape[:2] imgArray[0].shape[:2]:imgArray[x] cv2.resize(imgArray[x], (0, 0), None, scale, scale)else:imgArray[x] cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None,scale, scale)if len(imgArray[x].shape) 2: imgArray[x] cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR)hor np.hstack(imgArray)ver horreturn verpath Resources/lambo.png cv2.namedWindow(TrackBars) cv2.resizeWindow(TrackBars,640,240) cv2.createTrackbar(Hue Min,TrackBars,0,179,empty) cv2.createTrackbar(Hue Max,TrackBars,19,179,empty) cv2.createTrackbar(Sat Min,TrackBars,110,255,empty) cv2.createTrackbar(Sat Max,TrackBars,240,255,empty) cv2.createTrackbar(Val Min,TrackBars,153,255,empty) cv2.createTrackbar(Val Max,TrackBars,255,255,empty)while True:img cv2.imread(path)imgHSV cv2.cvtColor(img,cv2.COLOR_BGR2HSV)h_min cv2.getTrackbarPos(Hue Min,TrackBars)h_max cv2.getTrackbarPos(Hue Max, TrackBars)s_min cv2.getTrackbarPos(Sat Min, TrackBars)s_max cv2.getTrackbarPos(Sat Max, TrackBars)v_min cv2.getTrackbarPos(Val Min, TrackBars)v_max cv2.getTrackbarPos(Val Max, TrackBars)print(h_min,h_max,s_min,s_max,v_min,v_max)lower np.array([h_min,s_min,v_min])upper np.array([h_max,s_max,v_max])mask cv2.inRange(imgHSV,lower,upper)imgResult cv2.bitwise_and(img,img,maskmask)# cv2.imshow(Original,img)# cv2.imshow(HSV,imgHSV)# cv2.imshow(Mask, mask)# cv2.imshow(Result, imgResult)imgStack stackImages(0.6,([img,imgHSV],[mask,imgResult]))cv2.imshow(Stacked Images, imgStack)cv2.waitKey(1)代码示例和运行结果 import cv2 import numpy as np param scale: 图像缩放比例系数 param imgArray: 二维图像数组def stackImages(scale,imgArray):rows len(imgArray)cols len(imgArray[0])rowsAvailable isinstance(imgArray[0], list)width imgArray[0][0].shape[1]height imgArray[0][0].shape[0]if rowsAvailable:for x in range ( 0, rows):for y in range(0, cols):if imgArray[x][y].shape[:2] imgArray[0][0].shape [:2]:imgArray[x][y] cv2.resize(imgArray[x][y], (0, 0), None, scale, scale)else:imgArray[x][y] cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), None, scale, scale)if len(imgArray[x][y].shape) 2: imgArray[x][y] cv2.cvtColor( imgArray[x][y], cv2.COLOR_GRAY2BGR)imageBlank np.zeros((height, width, 3), np.uint8)hor [imageBlank]*rowshor_con [imageBlank]*rowsfor x in range(0, rows):hor[x] np.hstack(imgArray[x])ver np.vstack(hor)else:for x in range(0, rows):if imgArray[x].shape[:2] imgArray[0].shape[:2]:imgArray[x] cv2.resize(imgArray[x], (0, 0), None, scale, scale)else:imgArray[x] cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None,scale, scale)if len(imgArray[x].shape) 2: imgArray[x] cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR)hor np.hstack(imgArray)ver horreturn ver# 进度条回调函数param val: 用户选择的当前进度条的数值def onValueChanged(val):# print(val: , val)pass# 颜色检测 path Resources/lambo.png cv2.namedWindow(TrackBars) cv2.resizeWindow(TrackBars, 640, 240) # 创建一个宽为640高为200的窗口名称为Trackbars的窗口 # 在窗口名称为Trackbars的窗口中创建一个名为Hue Min的滑动条最小值默认为0最大值为179滑动条所在值即为hmin用来控制H分量的最小值 cv2.createTrackbar(Hue Min, TrackBars, 0, 179, onValueChanged) # 在窗口名称为Trackbars的窗口中创建一个名为Hue Max的滑动条最小值默认为0最大值为179滑动条所在值即为hmax用来控制H分量的最大值 cv2.createTrackbar(Hue Max, TrackBars, 19, 179, onValueChanged) # 在窗口名称为Trackbars的窗口中创建一个名为Sat Min的滑动条最小值默认为0最大值为255滑动条所在值即为smin用来控制S分量的最小值 cv2.createTrackbar(Sat Min, TrackBars, 110, 255, onValueChanged) # 在窗口名称为Trackbars的窗口中创建一个名为Sat Max的滑动条最小值默认为0最大值为255滑动条所在值即为smax用来控制S分量的最大值 cv2.createTrackbar(Sat Max, TrackBars, 240, 255, onValueChanged) # 在窗口名称为Trackbars的窗口中创建一个名为Val Min的滑动条最小值默认为0最大值为255滑动条所在值即为vmin用来控制V分量的最小值 cv2.createTrackbar(Val Min, TrackBars, 153, 255, onValueChanged) # 在窗口名称为Trackbars的窗口中创建一个名为Val Max的滑动条最小值默认为0最大值为255滑动条所在值即为vmax用来控制V分量的最大值 cv2.createTrackbar(Val Max, TrackBars, 255, 255, onValueChanged)# 循环检测用户操作用户可以通过Trackbars窗口中的滑动条分别控制H、S、V三个分量的最小和最大值从而控制mask以及Result图像的最终呈现 while True:img cv2.imread(path)imgHSV cv2.cvtColor(img, cv2.COLOR_BGR2HSV)h_min cv2.getTrackbarPos(Hue Min, TrackBars)h_max cv2.getTrackbarPos(Hue Max, TrackBars)s_min cv2.getTrackbarPos(Sat Min, TrackBars)s_max cv2.getTrackbarPos(Sat Max, TrackBars)v_min cv2.getTrackbarPos(Val Min, TrackBars)v_max cv2.getTrackbarPos(Val Max, TrackBars)print(h_min, h_max, s_min, s_max, v_min, v_max)lower np.array([h_min, s_min, v_min])upper np.array([h_max, s_max, v_max])mask cv2.inRange(imgHSV, lower, upper) # 根据lower和upper以及imgHSV图像生成mask图像imgResult cv2.bitwise_and(img, img, maskmask)# cv2.imshow(Original, img)# cv2.imshow(HSV, imgHSV)# cv2.imshow(Mask, mask)# cv2.imshow(Result, imgResult)imgStack stackImages(0.6, ([img, imgHSV], [mask, imgResult]))cv2.imshow(Stacked Images, imgStack)cv2.waitKey(1) cv2.destroyAllWindows()运行结果如下图所示 使用matplotlib库将多幅图像在一张图上显示 当然我们可以替换掉上面的stackImages(scale,imgArray)借助matplotlib库将多幅图像在一张图上显示相应的代码如下 import cv2 import numpy as np from matplotlib import pyplot as plt# 进度条回调函数param val: 用户选择的当前进度条的数值def onValueChanged(val):# print(val: , val)pass# 颜色检测 path Resources/lambo.png cv2.namedWindow(TrackBars) cv2.resizeWindow(TrackBars, 640, 240) # 创建一个宽为640高为200的窗口名称为Trackbars的窗口 # 在窗口名称为Trackbars的窗口中创建一个名为Hue Min的滑动条最小值默认为0最大值为179滑动条所在值即为hmin用来控制H分量的最小值 cv2.createTrackbar(Hue Min, TrackBars, 0, 179, onValueChanged) # 在窗口名称为Trackbars的窗口中创建一个名为Hue Max的滑动条最小值默认为0最大值为179滑动条所在值即为hmax用来控制H分量的最大值 cv2.createTrackbar(Hue Max, TrackBars, 19, 179, onValueChanged) # 在窗口名称为Trackbars的窗口中创建一个名为Sat Min的滑动条最小值默认为0最大值为255滑动条所在值即为smin用来控制S分量的最小值 cv2.createTrackbar(Sat Min, TrackBars, 110, 255, onValueChanged) # 在窗口名称为Trackbars的窗口中创建一个名为Sat Max的滑动条最小值默认为0最大值为255滑动条所在值即为smax用来控制S分量的最大值 cv2.createTrackbar(Sat Max, TrackBars, 240, 255, onValueChanged) # 在窗口名称为Trackbars的窗口中创建一个名为Val Min的滑动条最小值默认为0最大值为255滑动条所在值即为vmin用来控制V分量的最小值 cv2.createTrackbar(Val Min, TrackBars, 153, 255, onValueChanged) # 在窗口名称为Trackbars的窗口中创建一个名为Val Max的滑动条最小值默认为0最大值为255滑动条所在值即为vmax用来控制V分量的最大值 cv2.createTrackbar(Val Max, TrackBars, 255, 255, onValueChanged)# 循环检测用户操作用户可以通过Trackbars窗口中的滑动条分别控制H、S、V三个分量的最小和最大值从而控制mask以及Result图像的最终呈现 while True:img cv2.imread(path)imgHSV cv2.cvtColor(img, cv2.COLOR_BGR2HSV)h_min cv2.getTrackbarPos(Hue Min, TrackBars)h_max cv2.getTrackbarPos(Hue Max, TrackBars)s_min cv2.getTrackbarPos(Sat Min, TrackBars)s_max cv2.getTrackbarPos(Sat Max, TrackBars)v_min cv2.getTrackbarPos(Val Min, TrackBars)v_max cv2.getTrackbarPos(Val Max, TrackBars)print(h_min, h_max, s_min, s_max, v_min, v_max)lower np.array([h_min, s_min, v_min])upper np.array([h_max, s_max, v_max])imgMask cv2.inRange(imgHSV, lower, upper) # 根据lower和upper以及imgHSV图像生成mask图像imgResult cv2.bitwise_and(img, img, maskimgMask)# cv2.imshow(Original, img)# cv2.imshow(HSV, imgHSV)# cv2.imshow(Mask, mask)# cv2.imshow(Result, imgResult)plt.figure(figsize(8, 6))plt.subplot(221), plt.axis(off), plt.title(1.Original Image)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.subplot(222), plt.axis(off), plt.title(2.HSV Image)plt.imshow(cv2.cvtColor(imgHSV, cv2.COLOR_BGR2RGB))plt.subplot(223), plt.axis(off), plt.title(3.Mask Image)plt.imshow(cv2.cvtColor(imgMask, cv2.COLOR_BGR2RGB))plt.subplot(224), plt.axis(off), plt.title(4.Result Image)# plt.imshow(imgResult)plt.imshow(cv2.cvtColor(imgResult, cv2.COLOR_BGR2RGB))plt.tight_layout()plt.show()cv2.waitKey(1) cv2.destroyAllWindows()在VScode中运行结果如下图所示 注意由于python-opencv中彩色图像默认是BGRmatplotlib库中默认是RGB所以使用matplotlib库显示图像时需要对原图像BGR使用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)函数进行转换不然图像显示不正确。如下图所示 参考资料 HSL和HSV色彩空间OpenCV—HSV色彩空间基础知识三分钟带你快速学习RGB、HSV和HSL颜色空间Learn-OpenCV-in-3-hours Python VideoLearn-OpenCV-in-3-hoursLearn-OpenCV-cpp-in-4-Hours C Videohttps://github.com/murtazahassan/Learn-OpenCV-cpp-in-4-Hourshttps://github.com/murtazahassan
http://www.zqtcl.cn/news/359447/

相关文章:

  • 关于公司网站改版通知jmr119色带
  • 城关区建设局网站珠海中英文网站建设
  • 长春哪家做网站便宜手机英语网站
  • 应城网站建设莱芜拉呱
  • 如何建立淘宝客网站HTML网站建设课程
  • 网站建设供需chrome不安全的网站设置
  • 网站dns修改中国楼市未来发展趋势
  • 网站超级链接怎么做帮别人发广告赚钱平台
  • 做网站可以赚钱么注册做网站的公司
  • 河南省建协网官方网站建网站卖阀门
  • 医院网站怎么制作重庆安全监督工程信息网
  • 饰品网站建设规划书搭建微信网站
  • 开发网站访问流量赚钱加盟网站需要怎么做
  • 装饰协会网站源码湖南省郴州市北湖区
  • 花都网站建设价格重庆市住房和城乡建设厅网站
  • 北京住总第一开发建设有限公司网站wordpress 网站访问认证页面
  • 网站制作的管理苏州百度推广服务中心
  • 厦门建行网站首页企业展厅建筑外观
  • 重庆定制型网站建设1000套网站源码
  • 阿里云网站建设服务费会计科目安平县建设局网站
  • 网上做国外兼职网站网络编程技术实验报告
  • iis网站服务器安全隐患分析创新的合肥网站建设
  • 蛋糕网站建设方案广州网站公司推荐
  • 无锡seo公司网站广渠门做网站的公司
  • 安徽股票配资网站建设seo教程自学网
  • 网站建设酷隆做3d建模贴图找哪个网站
  • 天津市工程建设交易管理中心网站自己如何搭建服务器
  • 汉语网站建设心得专业网站的定义
  • 泉州台商区建设局网站论坛内网站怎么建设
  • 做文字云的网站平面设计发展前景