pycharm+python学习笔记(2)

您所在的位置:网站首页 怎样查看照片像素 pycharm+python学习笔记(2)

pycharm+python学习笔记(2)

2024-06-26 20:29| 来源: 网络整理| 查看: 265

1.读取像素 灰度图像直接返回灰度值,彩色图像则返回B、G、R三个分量。注意OpenCV读取图像是BGR存储显示,需要转换为RGB再进行图像处理。 灰度图像:返回值 = 图像(位置参数) eg: test=img[88,42] 彩色图像:返回值 = 图像[位置元素, 0 | 1 | 2 ] 获取BGR三个通道像素

import cv2 as cv img=cv.imread("D:/ptext/girl.jpg") test=img[100,100] print(test) img[100,100]=[255,255,255] #会发现,[100,100]处出现一个白点像素 print(test) blue=img[100,100,0] print(blue) green=img[100,100,1] print(green) red=img[100,100,2] print(red) cv.namedWindow("Image") cv.imshow("Image", img) cv.waitKey(0) cv.destroyAllWindows()

输出的结果为: [ 20 45 201] [255 255 255] 255 255 255

2.修改像素 修改图像如果是灰度图像则直接赋值新像素即可,彩色图像依次给三个值赋值即可。 灰度图像: img[88,142] = 255 彩色图像:方法一 img[88,142, 0] = 255 img[88,142, 1] = 255 img[88,142, 2] = 255 彩色图像:方法二 img[88,142] = [255, 255, 255]

下面将行100到200、列100到300的像素区域设置为白色

import cv2 as cv img=cv.imread("D:/ptext/girl.jpg")#读取图片 #将行100到200、列100到300的像素区域设置为白色 img[100:200,100:300]=[255,255,255] cv.namedWindow("Image")#显示图像 cv.imshow("Image", img) cv.waitKey(0) cv.destroyAllWindows()

结果如下图所示: 在这里插入图片描述 3.Numpy读取像素 返回值 = 图像.item(位置参数)

import cv2 as cv img=cv.imread("D:/ptext/girl.jpg")#读取图片 blue=img.item(100,100,0) green=img.item(100,100,1) red=img.item(100,100,2) print(blue) #注意OpenCV读取的图像通道是BGR print(green) print(red) cv.namedWindow("Image")#显示图像 cv.imshow("Image", img) cv.waitKey(0) cv.destroyAllWindows()

输出结果为: 20 45 201

4.Numpy修改像素 图像.itemset(位置, 新值)

import cv2 as cv img=cv.imread("D:/ptext/girl.jpg")#读取图片 img.itemset((100,100,0),255) img.itemset((100,100,1),255) img.itemset((100,100,2),0) blue=img.item(100,100,0) green=img.item(100,100,1) red=img.item(100,100,2) print(blue) #注意OpenCV读取的图像通道是BGR print(green) print(red) cv.namedWindow("Image")#显示图像 cv.imshow("Image", img) cv.waitKey(0) cv.destroyAllWindows()

输出结果如下所示: 255 255 0

5.行列像素的读取 cv.GetCol(im, 0): 返回第一列的像素 cv GetCols(im, 0, 10): 返回前 10 列 cv.GetRow(im, 0): 返回第一行 cv.GetRows(im, 0, 10): 返回前 10 行 这个我在试验的时候发现:AttributeError: module ‘cv2.cv2’ has no attribute ‘GetCol’

6.批量处理——通过for循环迭代处理

import cv2 as cv import random img=cv.imread("D:/ptext/girl.jpg")#读取图片 sp=img.shape#图像矩阵的shape属性表示图像的大小,shape会返回tuple元组,第一个元素表示矩阵行数,第二个元组表示矩阵列数,第三个元素是3,表示像素值由光的三原色组成。 height=sp[0] width=sp[1] for i in range(height): for j in range(width): if i%2==0 and j%2==1:#假如我们把行是偶数列是奇数的像素随机取一个值 img[i,j]=[random.randrange(256),random.randrange(256),random.randrange(256)] cv.namedWindow("Image")#显示图像 cv.imshow("Image", img) cv.waitKey(0) cv.destroyAllWindows()

在这里插入图片描述 7.批量处理——通过LineIterator进行迭代处理 import cv2.cv as cv im = cv.LoadImage(“img/lena.jpg”) li = cv.InitLineIterator(im, (0, 0), (im.rows, im.cols)) #So loop the entire matrix for (r, g, b) in li: # 这里可以对每个像素点的 r g b 进行处理 这个我在试验时发现:AttributeError: module ‘cv2.cv2’ has no attribute ‘InitLineIterator’



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3