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

印刷厂网站模板python做网站快么

印刷厂网站模板,python做网站快么,网站建设目标初步目标,网站手机端生成图像直方图为图像中像素强度的分布提供了有价值的见解。通过了解直方图#xff0c;你可以获得有关图像对比度、亮度和整体色调分布的信息。这些知识对于图像增强、图像分割和特征提取等任务非常有用。 本文旨在为学习如何使用 OpenCV 执行图像直方图计算提供清晰且全面的指南。… 图像直方图为图像中像素强度的分布提供了有价值的见解。通过了解直方图你可以获得有关图像对比度、亮度和整体色调分布的信息。这些知识对于图像增强、图像分割和特征提取等任务非常有用。 本文旨在为学习如何使用 OpenCV 执行图像直方图计算提供清晰且全面的指南。通过理解和应用直方图分析技术你可以提高图像质量、执行阈值操作、分析颜色成分、提取有用的特征以及更有效地可视化和理解图像。 图像直方图 每个图像都由单独的像素组成就像网格上的小点一样。假设我们有一个大小为 250 列和 100 行的图像总共 2500 个像素。每个像素都可以有不同的颜色值用 0 到 255 范围内的数字表示。 为了可视化图像中颜色值的分布我们可以创建直方图。该直方图充当一组条形图显示具有相同颜色值的像素数。通过比较条形的高度我们可以轻松识别图像中哪些颜色值更突出或更频繁地出现。这种图形表示为图像的整体颜色组成和分布提供了宝贵的见解。 图像直方图单色 现在记住像素强度 0 → 黑色 255 → 白色 因此如果我们的直方图向左移动左偏则图像会包含更多黑色像素如果我们的直方图向右移动右偏图像会包含更多白色像素。 左偏和右偏直方图 所以我相信你已经完全理解了 更黑→更暗的图像更白→更亮的图像 现在让我们在 OpenCV 中进行直方图计算。 首先我们将加载图像并将其可视化。 #import necessary libraries import cv2 import numpy as np import matplotlib.pyplot as plt#using opencv to read an image #BGR Image image  cv2.imread(C:/users/public/pictures/nature.jpg)#visualizing cv2.namedWindow(BGR Image, cv2.WINDOW_NORMAL); cv2.imshow(BGR Image,image);cv2.waitKey(0)  0xFF  cv2.destroyAllWindows() 在绘制直方图之前我们可以分离该图像中的颜色通道。 B  image[:,:,0] #blue layer G  image[:,:,1] #green layer R  image[:,:,2] #red layer 现在我们使用 OpenCV 函数 cv.calcHist() 计算并找到每一层的直方图并使用 OpenCV 和 Matplotlib 函数绘制这些直方图 cv.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) ● imagesuint8 或float32 类型的源图像。它应该放在方括号中即“[img]”。 ● channels也在方括号中给出。它是我们计算直方图的通道的索引。例如如果输入是灰度图像则其值为[0]。对于彩色图像可以通过[0]、[1]或[2]分别计算蓝色、绿色或红色通道的直方图。 ● mask蒙版图像。为了找到整个图像的直方图它被指定为“None”。但是如果你想找到图像特定区域的直方图则必须为其创建一个蒙版图像并将其作为蒙版。 ● histSizeBIN 计数。需要在方括号中给出。对于全尺寸我们通过[256]。 ● ranges范围。通常是[0,256]。 B_histo  cv2.calcHist([image],[0], None, [256], [0,256]) G_histo  cv2.calcHist([image],[1], None, [256], [0,256]) R_histo  cv2.calcHist([image],[2], None, [256], [0,256]) 现在我们使用 matplotlib 将它们绘制在子图中。 你可以在不同设置的图像上尝试此操作。 完整代码 #import necessary libraries import cv2 import numpy as np import matplotlib.pyplot as plt#using opencv to read an image #BGR Image image  cv2.imread(C:/users/public/pictures/nature.jpg)#seperating colour channels B  image[:,:,0] #blue layer G  image[:,:,1] #green layer R  image[:,:,2] #red layer#calculating histograms for each channel B_histo  cv2.calcHist([image],[0], None, [256], [0,256]) G_histo  cv2.calcHist([image],[1], None, [256], [0,256]) R_histo  cv2.calcHist([image],[2], None, [256], [0,256])#visualizing histograms plt.subplot(2, 2, 1) plt.plot(B_histo, b) plt.subplot(2, 2, 2) plt.plot(G_histo, g) plt.subplot(2, 2, 3) plt.plot(R_histo, r)#visualizing image cv2.namedWindow(BGR Image, cv2.WINDOW_NORMAL); cv2.imshow(BGR Image,image); cv2.waitKey(0)  0xFF  cv2.destroyAllWindows() 曝光过度和曝光不足的图像 然后我们可以扩展这个想法来识别曝光过度太亮的图像和曝光不足太暗的图像。 让我们看看这些图像的直方图。 使用 Matplotib 和 OpenCV 绘制直方图 显然一个直方图左偏表示图像曝光不足而另一直方图右偏表示图像曝光过度。 在这里我们只需查看直方图就可以清楚地了解图像是否曝光不足或曝光过度。 直方图均衡 考虑曝光不足或曝光过度的图像其像素值仅局限于某个特定的值范围。 例如较亮的图像将所有像素限制为高值。 但是一个好的图像将具有来自图像的所有区域的像素。所以你需要将这个直方图拉伸到两端。这通常会提高图像的对比度。 当对彩色图像执行直方图均衡时我们通常将该过程分别应用于图像中RGB颜色值的红色、绿色和蓝色分量。 首先我们读取图像并将图像分成三个颜色层。 import cv2 import numpy as np import matplotlib.pyplot as plt#using opencv to read an image #BGR Image image  cv2.imread(C:/users/public/pictures/underexposed_image.jpg)#seperating colour channels B  image[:,:,0] #blue layer G  image[:,:,1] #green layer R  image[:,:,2] #red layer 然后我们使用 cv.equalizeHist () 来均衡每个颜色层的直方图。使用 Matplotlib 和 OpenCV 将它们可视化。 b_equi  cv2.equalizeHist(B) g_equi  cv2.equalizeHist(G) r_equi  cv2.equalizeHist(R)plt.imshow(b_equi) plt.title(b_equi) plt.show() plt.imshow(g_equi) plt.title(g_equi) plt.show() plt.imshow(r_equi) plt.title(r_equi) plt.show() 使用 OpenCV 均衡 R、G 和 B 层 通过均衡的颜色层我们使用 cv.calcHist() 计算每种颜色的直方图。然后将它们全部绘制出来。 B_histo  cv2.calcHist([b_equi],[0], None, [256], [0,256])  G_histo  cv2.calcHist([g_equi],[0], None, [256], [0,256]) R_histo  cv2.calcHist([r_equi],[0], None, [256], [0,256])plt.subplot(2, 2, 1) plt.plot(G_histo, g) plt.subplot(2, 2, 2) plt.plot(R_histo, r) plt.subplot(2, 2, 3) plt.plot(B_histo, b) 你一定已经注意到我们在“channels”位置仅使用了 [0]。在前面的例子中我们使用了所有[0]、[1]和[2]。这是由于分离通道的可用性。因此只有 1 个通道。因此对于所有直方图“channels”为 [0] 或者你可以获取原始图像中每个通道的直方图并使用均衡后的颜色层绘制它们。 #calculate histograms for each channel seperately #Equilized channels B_histo  cv2.calcHist([b_equi],[0], None, [256], [0,256])  G_histo  cv2.calcHist([g_equi],[0], None, [256], [0,256]) R_histo  cv2.calcHist([r_equi],[0], None, [256], [0,256]) #Original channels BO_histo  cv2.calcHist([image],[0], None, [256], [0,256])  GO_histo  cv2.calcHist([image],[1], None, [256], [0,256]) RO_histo  cv2.calcHist([image],[2], None, [256], [0,256])#visualize the channel histograms seperately plt.figure(figsize(10,12), )plt.subplot(3, 2, 1) plt.title(Green Original) plt.plot(GO_histo, g)plt.subplot(3, 2, 2) plt.title(Green Equilized) plt.plot(G_histo, g)plt.subplot(3, 2, 3) plt.title(Red Original) plt.plot(RO_histo, r)plt.subplot(3, 2, 4) plt.title(Red Equilized) plt.plot(R_histo, r)plt.subplot(3, 2, 5) plt.title(Blue Original) plt.plot(BO_histo, b)plt.subplot(3, 2, 6) plt.title(Blue Equilized) plt.plot(B_histo, b) s 原始图像颜色直方图与均衡图像颜色直方图 继续下一步我们现在拥有的只是层。为了从中获得图像我们需要合并它们。 equi_im  cv2.merge([b_equi,g_equi,r_equi]) 现在让我们并排查看均衡后的图像和原始图像。 cv2.namedWindow(Original Image, cv2.WINDOW_NORMAL); cv2.imshow(Original Image,image); cv2.namedWindow(New Image, cv2.WINDOW_NORMAL); cv2.imshow(New Image,equi_im);cv2.waitKey(0)  0xFF  cv2.destroyAllWindows() 使用 OpenCV 均衡图像 完整代码 import cv2 import numpy as np import matplotlib.pyplot as plt#using opencv to read an image #BGR Image image  cv2.imread(C:/users/public/pictures/underexposed_image.jpg)#seperating colour channels B  image[:,:,0] #blue layer G  image[:,:,1] #green layer R  image[:,:,2] #red layer#equilize each channel seperately b_equi  cv2.equalizeHist(B) g_equi  cv2.equalizeHist(G) r_equi  cv2.equalizeHist(R)#calculate histograms for each channel seperately B_histo  cv2.calcHist([b_equi],[0], None, [256], [0,256])  G_histo  cv2.calcHist([g_equi],[0], None, [256], [0,256]) R_histo  cv2.calcHist([r_equi],[0], None, [256], [0,256])#merge thechannels and create new image equi_im  cv2.merge([b_equi,g_equi,r_equi])#visualize the equilized channels seperately plt.imshow(b_equi) plt.title(b_equi) plt.show() plt.imshow(g_equi) plt.title(g_equi) plt.show() plt.imshow(r_equi) plt.title(r_equi) plt.show()#visualize the channel histograms seperately plt.subplot(2, 2, 1) plt.plot(G_histo, g) plt.subplot(2, 2, 2) plt.plot(R_histo, r) plt.subplot(2, 2, 3) plt.plot(B_histo, b)#visualize the original and equilized images cv2.namedWindow(Original Image, cv2.WINDOW_NORMAL); cv2.imshow(Original Image,image); cv2.namedWindow(New Image, cv2.WINDOW_NORMAL); cv2.imshow(New Image,equi_im);cv2.waitKey(0)  0xFF  cv2.destroyAllWindows() 感谢阅读
http://www.w-s-a.com/news/575936/

相关文章:

  • 免费生成网站软件下载影视公司名字取名
  • 网站公司提供程序免费的网页入口
  • jsp网站开发实例教学房产网站怎么做400电话
  • 网络营销方式及流程广州seo工作
  • 专业商城网站制作免费网页设计成品
  • 韩国优秀设计网站找做网站找那个平台做
  • 贵州省清镇市建设学校网站国家企业信用信息公示系统官网河北
  • 游戏界面设计网站网站建设问一问公司
  • 织梦网站模板如何安装教程视频国外哪些网站可以注册域名
  • 用群晖做网站网站中文名称注册
  • 做一个企业网站需要哪些技术app开发公司名字
  • 网站建设有技术的公司图片在线设计平台
  • 建公司网站的详细步骤关于进一步加强网站建设
  • 丰宁县有做网站的吗?维护一个网站一年多少钱
  • 杭州网站设计渠道wordpress购物主题
  • 山东政务网站建设文字logo免费设计在线生成
  • 韩雪个人网站唐山网络运营推广
  • 查建设工程业绩在哪个网站网站建设优化服务如何
  • 江苏省建设工程安全监督网站商洛网站制作
  • 海淀网站建设wzjs51网页设计页面配色分析
  • 网站的备案流程图垦利网站制作
  • 行业用品网站怎么建设外链买东西的网站都有哪些
  • 淘宝做促销的网站集团门户网站建设策划
  • 网站排行榜查询怎样把个人介绍放到百度
  • vps 网站上传河北省招投标信息网
  • 武进网站建设咨询网站定制公司选哪家
  • 郑州市建设投资集团公司网站深圳企业网站建设推荐公司
  • 天津个人网站备案查询dz网站恢复数据库
  • 关于网站建设的期刊文献宣传片文案
  • 物业网站模板下载wordpress+菜单大小