当前位置:网站首页>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 :
6912000There 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 ↓

边栏推荐
- Roll up, break 35 - year - old Anxiety, animation Demonstration CPU recording Function call Process
- QT realizes signal transmission and reception between two windows
- Solve liquibase – waiting for changelog lock Cause database deadlock
- Tdengine already supports the industrial Intel edge insight package
- Coordinate system of view
- Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用 - 上
- 【 conseils 】 obtenir les valeurs des axes X et y de la fonction cdfplot dans MATLAB
- [NTIRE 2022]Residual Local Feature Network for Efficient Super-Resolution
- 百度智能小程序巡檢調度方案演進之路
- Theme. AppCompat. Light. Darkactionbar not found
猜你喜欢

How to use sqlcipher tool to decrypt encrypted database under Windows system

RMS to EAP is simply implemented through mqtt

Node red series (29): use slider and chart nodes to realize double broken line time series diagram

Those who are good at using soldiers, hide in the invisible, and explain the best promotional value works in depth in 90 minutes

Comment obtenir le temps STW du GC (collecteur d'ordures)?

如何獲取GC(垃圾回收器)的STW(暫停)時間?

How to get the STW (pause) time of GC (garbage collector)?

Uncover the practice of Baidu intelligent testing in the field of automatic test execution

Tdengine can read and write through dataX, a data synchronization tool

QT realizes signal transmission and reception between two windows
随机推荐
The most comprehensive promotion strategy: online and offline promotion methods of E-commerce mall
善用兵者,藏于无形,90 分钟深度讲解最佳推广价值作品
Matrix processing practice
[app packaging error] to proceed, either fix the issues identified by lint, or modify your build script as follow
Officially launched! Tdengine plug-in enters the official website of grafana
把欧拉的创新带向世界 SUSE 要做那个引路人
Comparison of batch merge between Oracle and MySQL
一种用于干式脑电图的高密度256通道电极帽
从“化学家”到开发者,从甲骨文到TDengine,我人生的两次重要抉择
What should we pay attention to when developing B2C websites?
Jupiter notebook shortcut key
宝塔面板MySQL无法启动
Node red series (29): use slider and chart nodes to realize double broken line time series diagram
移动端异构运算技术-GPU OpenCL编程(进阶篇)
Apache dolphin scheduler system architecture design
观测云与 TDengine 达成深度合作,优化企业上云体验
Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用 - 上
如何正确的评测视频画质
MySQL数字类型学习笔记
From "chemist" to developer, from Oracle to tdengine, two important choices in my life