python - 如何使用python将像素列表转换为图像
问题描述
我想更改整个图像中的特定像素值。我已经使用 img.getdata() 函数将图像转换为列表。现在处理后我想将该列表转换为图像格式。如果您知道任何方法,请建议我。
import cv2
import numpy as np
from PIL import Image
img = Image.open('test.jpg','r')
pix=list(img.getdata())
for i in pix:
if i ==(254,0,0):
print("found",i)
pi=np.array(pix)
pi=Image.fromarray(pi)
cv2.imshow("img",pi)
错误是
Traceback (most recent call last):
File "C:\Python38\pixels.py", line 19, in <module>
cv2.imshow("img",pi)
TypeError: Expected Ptr<cv::UMat> for argument 'mat'
我也尝试了一些其他方式,但无法看到图像。
解决方案
这应该有助于:
#!/usr/bin/env python3
import numpy as np
import cv2
# Open an image
im = cv2.imread('image.png')
# Count RGB(254,0 ,0) pixels
sought = [254,0,0]
total = np.count_nonzero(np.all(im==sought,axis=2))
print(f'Total before: {total}')
# Draw a rectangle 10x10 that colour
im[0:10,0:10] = sought
# Count pixels that colour
total = np.count_nonzero(np.all(im==sought,axis=2))
print(f'Total after: {total}')
# Save
cv2.imwrite('result.png',im)
样本输出
Total before: 0
Total after: 100
推荐阅读
- php - 使用 Delphi TidHttp 爬行时检测客户端重定向
- javascript - React Bootstrap Navbar 挂机
- python - 如何在 pandas 中搜索多个多词短语?
- swiftui - UIViewControllerRepresentable 和 CNContactPickerViewController
- python - 覆盖 Qt MouseEvent 但仅当类变量为 True 时
- java - 非空属性引用了一个瞬态值 Hibernate
- java - 如何在休眠中覆盖瞬态对象的哈希码和等于?
- jquery - 我的下拉菜单没有使用 jQuery 出现。有小费吗?
- r - 使用过滤器计算均值给出错误值
- visual-studio-code - Live-Server 在 Visual Studio Code 端口 5500 中不起作用