当前位置:网站首页>Advanced opencv:bgr pixel intensity map
Advanced opencv:bgr pixel intensity map
2022-07-05 10:09:00 【woshicver】
Introduce
up to now , In our advanced OpenCV tutorial , We have :
Understand the concept of contrast .
Understand the concept of histogram equalization .
Implement contrast enhancement on grayscale images .
Draw the pixel histogram of gray-scale image .
However , as everyone knows , Our world is made up of many, many colors . Now we will try to analyze the contrast and pixel intensity of color images , That is, the image with color channel .
In order to promote this special advanced OpenCV Learning experience , We will use this link (https://wallpaperaccess.com/cool-outer-space) Downloaded images . perhaps , You can save the image found below .
Learn about color images
If you have read our previous articles , If I remember correctly , We learned about advanced OpenCV Use BGR Color channel , instead of RGB. You will find that the red and blue channels have been exchanged .
As shown in the figure above , There are many colors that are eye-catching and eye-catching . These colors with different hues are the result of mixing color channels .
There are three color channels in this image :
Blue
green
Red
It is through the mixing of these colors , Can appear belong to the secondary color of chromatography and many other colors .
Gain image insight
The first and most important step is to import the necessary packages into our python Script , Then we load the image into our system RAM in . This will be done by OpenCV Provided by the package imread() Method to accomplish :
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('C:/Users/Shivek/Pictures/Picture1.jpg')
The output of the above code block will be shown below :
As one may observe , The image is too big to be displayed in full size on my screen . however , We will not reduce the size of the image . This is because we want to know more about the properties and related information of pixels .
First , Let's see Image The shape of the (NumPy Array ):
print(image.shape)
The output of the above code line will be shown below :
After carefully checking this information tuple , It will be decrypted as follows :
The color channel is BGR-NOT RGB. Next , Let's see The size of the image —— Size tells us the total number of pixels that make up the entire image .
print(image.size)
Output :
6912000
There are more than 600 Mega pixels .
Let's look at the first pixel in the image . This is the pixel in the first row and the first column .
print(image[0][0])
its BGR Values, respectively 22、15 and 6.
Now let's move on :BGR Pixel count diagram .
BGR Pixel intensity line graph
Because every pixel in our image contains 3 A color channel , So we will need to traverse all pixels 3 Time , Each time from B、G and R Select the value in the channel . To do this , Can be for Circulation and enumerate() Function in combination with .
We may already know , enumerate() Function will allow us to traverse a fixed number of elements , And automatically record the number of each element .
We will use MatPlotLib The package obtains the visual effect of pixel intensity and count in the form of line graph .
colors = ('blue','green','red')
label = ("Blue", "Green", "Red")
for count,color in enumerate(colors):
histogram = cv2.calcHist([image],[count],None,[256],[0,256])
plt.plot(histogram,color = color, label=label[count]+str(" Pixels"))
The line by line explanation of the above code block is as follows :
In the following code line , We created a tuple , It contains the colors of three different lines of the figure . Because of 3 Sub iteration , Each iteration will choose a different color , So we can see on the chart BGR Pattern .
Color =(' Blue ',' green ',' Red ')
thereafter , Let's continue to create a tuple , It contains the corresponding labels of the chart legend . Again , At each iteration , A label will be selected to mark the corresponding color of the graphic . These labels will be included in the legend of the chart , We will see in the following lines .
label = ("Blue", "Green", "Red")
In order to facilitate graphic generation , We have a for-enumerate loop , This loop will be executed to select each required item from the pixel array and tuple , On these projects , They will be drawn as a line chart on the same canvas .
for count,color in enumerate(colors):
histogram = cv2.calcHist([image],[count],None,[256],[0,256])
plt.plot(histogram,color = color, label=label[count]+str(" Pixels"))
for The lines of code in the loop are as follows :
histogram = cv2.calcHist([image],[count],None,[256],[0,256])
We will use OpenCV In bag calcHist() Method , This method will obtain the histogram of pixel intensity , As we know in the previous article . We pass in the following parameters :
In order to draw graphics , We use MatPlotLib Provided by the package plot() Method , As shown below :
plt.plot(histogram, color=color, label=label[count]+str(" Pixels"))
We pass in the data to be plotted , Then the appropriate color . Assign a label to the graph , And according to for Iterate over the corresponding label in the index tuple . We will “ Pixels ” Append to tag name , So that the viewer can clearly see the completed graphics .
Before displaying the chart to the end user , We added some elements to the diagram , for example :
title .
Y The label of the shaft .
X The label of the shaft .
A legend .
To end processing , We use MatPlotLib Provided by the package show() Method to display the visual effect on the screen .
plt.title("Histogram Showing Number Of Pixels Belonging To Respective Pixel Intensity", color="crimson")
plt.ylabel("Number Of Pixels", color="crimson")
plt.xlabel("Pixel Intensity", color="crimson")
plt.legend(numpoints=1, loc="best")
plt.show()
The final BGR The pixel intensity line graph will be as follows :
The above visual display tells us exactly how the pixels are distributed in the original color image . What makes up our image 600 ten thousand + The position of pixels can be summarized in the above line graph .
Most of our pixels are on the left side of the image , As you can see from the diagram , The image is blue from the middle to the right , As shown by the blue pixel intensity line . Blue pixel intensity lines dominate these areas - If people look at images , That's true :
Please note how the full image fits my computer screen - This is because I adjusted its size .
A very interesting fact is , Although I have adjusted the size of the image , But if I want to create a pixel intensity map on the resized image , Then compared with the original image ,BGR The gradient of the graph is no different —— It just shrinks in size or “ scale ”.
Conclusion
In this paper , We studied :
stay Python Used in programming languages OpenCV Understand color images
BGR Color channel
Use Python Medium MatPlotLib Bao Jiang BGR Pixels are mapped to BGR Pixel intensity line graph
* END *
If you see this , Show that you like this article , Please forward 、 give the thumbs-up . WeChat search 「uncle_pn」, Welcome to add Xiaobian wechat 「 woshicver」, Update a high-quality blog post in your circle of friends every day .
↓ Scan QR code and add small code ↓
边栏推荐
- How to choose the right chain management software?
- 解决Navicat激活、注册时候出现No All Pattern Found的问题
- . Net delay queue
- Comment obtenir le temps STW du GC (collecteur d'ordures)?
- Cerebral Cortex:有向脑连接识别帕金森病中广泛存在的功能网络异常
- Unity particle special effects series - the poison spray preform is ready, and the unitypackage package can be used directly - next
- The essence of persuasion is to remove obstacles
- Jupiter notebook shortcut key
- Flutter development: use safearea
- Design and exploration of Baidu comment Center
猜你喜欢
[NTIRE 2022]Residual Local Feature Network for Efficient Super-Resolution
Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用 -下
How do enterprises choose the appropriate three-level distribution system?
美图炒币半年亏了3个亿,华为被曝在俄罗斯扩招,AlphaGo的同类又刷爆一种棋,今日更多大新闻在此...
Meitu lost 300 million yuan in currency speculation for half a year. Huawei was exposed to expand its enrollment in Russia. Alphago's peers have made another breakthrough in chess. Today, more big new
Application of data modeling based on wide table
ArcGIS Pro creating features
移动端异构运算技术-GPU OpenCL编程(进阶篇)
把欧拉的创新带向世界 SUSE 要做那个引路人
卷起来,突破35岁焦虑,动画演示CPU记录函数调用过程
随机推荐
The essence of persuasion is to remove obstacles
Observation cloud and tdengine have reached in-depth cooperation to optimize the cloud experience of enterprises
idea用debug调试出现com.intellij.rt.debugger.agent.CaptureAgent,导致无法进行调试
Understand the window query function of tdengine in one article
QT event filter simple case
Oracle combines multiple rows of data into one row of data
天龙八部TLBB系列 - 关于技能冷却和攻击范围数量的问题
Node red series (29): use slider and chart nodes to realize double broken line time series diagram
[app packaging error] to proceed, either fix the issues identified by lint, or modify your build script as follow
How to get the STW (pause) time of GC (garbage collector)?
H. 265 introduction to coding principles
天龙八部TLBB系列 - 单体技能群伤
mysql80服务不启动
Charm of code language
Tutorial on building a framework for middle office business system
Flutter development: a way to solve the problem of blank space on the top of listview
TDengine 连接器上线 Google Data Studio 应用商店
【小技巧】獲取matlab中cdfplot函數的x軸,y軸的數值
Those who are good at using soldiers, hide in the invisible, and explain the best promotional value works in depth in 90 minutes
【 conseils 】 obtenir les valeurs des axes X et y de la fonction cdfplot dans MATLAB