OpenCV-Python图像像素处理
简介图像都是由像素点构成的,图像分类:
1、二值图像(任意一个像素只能是0或1);
2、灰度图像(任意一个像素值都在0~255);
3、RGB图像(任意一个像素是(R,G,B)构成的),但是OpenCV是默认颜色通道是BGR.
图像都是由像素点构成的,图像分类:
1、二值图像(任意一个像素只能是0或1);
2、灰度图像(任意一个像素值都在0~255);
3、RGB图像(任意一个像素是(R,G,B)构成的),但是OpenCV是默认颜色通道是BGR.
这节主要介绍下如何处理图像的像素点.
一、灰度图像
示例:
# -*- coding: utf-8 -*-
# Data: 2023/7/2
import cv2
img = cv2.imread("./1-gray.jpg",cv2.IMREAD_UNCHANGED)
# 获取100行,100列像素点的值
print(img[100,100])
# 修改100行,100列像素点的值
img[100,100] = 255
print(img[100,100])
# 修改10行到100行,50列到100列像素点的值
img[10:100,50:100] = 255
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果:
E:\python\opencv\venv\Scripts\python.exe E:\python\opencv\main.py
200
255
二、彩色图像
示例:
# -*- coding: utf-8 -*-
# Data: 2023/7/2
import cv2
img = cv2.imread("./1-1.jpg",cv2.IMREAD_UNCHANGED)
# 获取100行,100列像素点的值,有三个通道,依次是B、G、R
print(img[100,100])
# 按通道获取像素值
print(img[100,100,0])
print(img[100,100,1])
print(img[100,100,2])
# 修改100行,100列像素点的值
img[100,100] = [255,255,255]
print(img[100,100])
# 按通道设置
img[100,100,0] = 254
img[100,100,1] = 253
img[100,100,2] = 252
print(img[100,100])
# 修改10行到100行,50列到100列像素点的值
img[10:100,50:100] = [255,255,255]
# 按通道设置像素值
# img[10:100,50:100,0] = 255
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果:
E:\python\opencv\venv\Scripts\python.exe E:\python\opencv\main.py
[184 199 208]
184
199
208
[255 255 255]
[254 253 252]
Process finished with exit code 0
除了以上获取和修改像素值的方法,还有另一种方法,就是item和itemset:
示例:
# -*- coding: utf-8 -*-
# Data: 2023/7/2
import cv2
img1 = cv2.imread("./1-1.jpg",cv2.IMREAD_UNCHANGED)
# 彩色图像获取像素值,需要指定通道
print(img1.item(500,500,0))
print(img1.item(500,500,1))
print(img1.item(500,500,2))
# 彩色图像修改像素值
img1.itemset((500,500,0),255)
img1.itemset((500,500,1),255)
img1.itemset((500,500,2),255)
print(img1.item(500,500,0))
print(img1.item(500,500,1))
print(img1.item(500,500,2))
img2 = cv2.imread("./1-gray.jpg",cv2.IMREAD_UNCHANGED)
# 灰度图像获取像素值
print(img2.item(500,500))
# 灰度图像修改像素值
img2.itemset((500,500),255)
print(img2.item(500,500))
运行效果
E:\python\opencv\venv\Scripts\python.exe E:\python\opencv\main.py
167
191
197
255
255
255
190
255
Process finished with exit code 0
uptime命令可以输出当前系统的时间、系统开机到现在的运行时间、目前多少用户在线和系统平均负载等信息
有时候当服务器出现流量出入过高的时候,需要去如何排查是哪些进程在使用,本文主要记录如何通过相关命令来进行排查。
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个结点最多只能有两棵子树,且有左右之分。
前一章节我们介绍了Redis的持久化RDB,它持久化的数据文件存放在默认文件名为dump.rdb的文件中。本节我们将进行探究RDB文件的格式是怎样的?Redis是如何以二进制的形式来存放数据的?
这两天一直遇到一个问题,就是Echarts如果放在一个默认隐藏的div元素中,后面再显示这个div,但是图标不出来,找了很多博客,原来是高度没有设置。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题