img.show()运行错误
时间: 2023-09-01 12:11:06 浏览: 58
如果您在运行 `img.show()` 时遇到错误,可能是因为您的环境中没有安装适当的图像查看器。您可以尝试使用其他方法来查看生成的二维码图像,例如:
```python
# 保存二维码图像
img.save("qrcode.png")
# 使用Pillow库打开并显示图像
from PIL import Image
im = Image.open("qrcode.png")
im.show()
```
在这个例子中,我们使用 `img.save()` 方法将二维码图像保存为 PNG 文件,然后使用Pillow库的 `Image.open()` 方法打开并显示图像。如果您电脑上没有安装Pillow库,可以使用 `pip install Pillow` 命令来安装。
相关问题
程序运行提示AttributeError: 'NoneType' object has no attribute 'astype',修改程序img = cv2.imread('1.tiff', cv2.IMREAD_GRAYSCALE) img_bool = img.astype(np.bool) row_sum = np.sum(img_bool, axis=1) plt.plot(row_sum) plt.show()
这个错误通常是由于灰度图像读取失败导致的。请确认一下`1.tiff`文件是否存在,并且是一个有效的灰度图像文件。如果文件存在但仍无法读取,请尝试使用绝对路径来读取文件,例如:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取灰度图像
img = cv2.imread('/path/to/1.tiff', cv2.IMREAD_GRAYSCALE)
# 将二值图像转换为布尔类型
img_bool = img.astype(np.bool)
# 统计每行像素不为零的点的个数
row_sum = np.sum(img_bool, axis=1)
# 绘制图像
plt.plot(row_sum)
plt.show()
```
在这里,`/path/to/1.tiff`应该替换为`1.tiff`文件的绝对路径。
# -*- coding: utf-8 -*- import io from pathlib import Path from PIL import Image def parse_bg_captcha(img, im_show=False, save_path=None): if isinstance(img, (str, Path)): _img = Image.open(img) elif isinstance(img, bytes): _img = Image.open(io.BytesIO(img)) else: raise ValueError(f'输入图片类型错误, 必须是<type str>/<type Path>/<type bytes>: {type(img)}') # 图片还原顺序, 定值 _Ge = [39, 38, 48, 49, 41, 40, 46, 47, 35, 34, 50, 51, 33, 32, 28, 29, 27, 26, 36, 37, 31, 30, 44, 45, 43, 42, 12, 13, 23, 22, 14, 15, 21, 20, 8, 9, 25, 24, 6, 7, 3, 2, 0, 1, 11, 10, 4, 5, 19, 18, 16, 17] w_sep, h_sep = 10, 80 # 还原后的背景图 new_img = Image.new('RGB', (260, 160)) for idx in range(len(_Ge)): x = _Ge[idx] % 26 * 12 + 1 y = h_sep if _Ge[idx] > 25 else 0 # 从背景图中裁剪出对应位置的小块 img_cut = _img.crop((x, y, x + w_sep, y + h_sep)) print(img_cut) # 将小块拼接到新图中 new_x = idx % 26 * 10 new_y = h_sep if idx > 25 else 0 new_img.paste(img_cut, (new_x, new_y)) if im_show: new_img.show() if save_path is not None: save_path = Path(save_path).resolve().__str__() new_img.save(save_path) return new_img if __name__ == '__main__': parse_bg_captcha("bg.webp", im_show=True, save_path='bg.jpg') 这段代码用node编写一边
很抱歉,这段代码是 Python 代码,无法直接在 Node.js 中运行。如果你想在 Node.js 中实现类似的功能,可以考虑使用类似的图片处理库,例如 Jimp 或 GraphicsMagick。以下是使用 Jimp 库实现类似功能的示例代码:
```javascript
const Jimp = require('jimp');
async function parseBgCaptcha(imgPath, imShow = false, savePath = null) {
// 读取图片
const img = await Jimp.read(imgPath);
// 图片还原顺序, 定值
const Ge = [
39, 38, 48, 49, 41, 40, 46, 47, 35, 34, 50, 51, 33, 32, 28, 29, 27, 26, 36,
37, 31, 30, 44, 45, 43, 42, 12, 13, 23, 22, 14, 15, 21, 20, 8, 9, 25, 24, 6,
7, 3, 2, 0, 1, 11, 10, 4, 5, 19, 18, 16, 17
];
const wSep = 10;
const hSep = 80;
// 还原后的背景图
const newImg = new Jimp(260, 160);
for (let idx = 0; idx < Ge.length; idx++) {
const x = Ge[idx] % 26 * 12 + 1;
const y = Ge[idx] > 25 ? hSep : 0;
// 从背景图中裁剪出对应位置的小块
const imgCut = img.clone().crop(x, y, wSep, hSep);
console.log(imgCut);
// 将小块拼接到新图中
const newX = idx % 26 * 10;
const newY = idx > 25 ? hSep : 0;
newImg.blit(imgCut, newX, newY);
}
if (imShow) {
newImg.write('output.jpg');
}
if (savePath !== null) {
await newImg.writeAsync(savePath);
}
return newImg;
}
parseBgCaptcha('bg.webp', true, 'bg.jpg');
```
在上面的代码中,我们使用 Jimp 库读取了名为 `bg.webp` 的图片,然后使用跟 Python 版本类似的方式还原了图片中的小块位置,并裁剪拼接成一张新图片。如果设置了 `imShow` 为 `true`,则会在当前目录下生成一张新图片 `output.jpg` 并打开。如果设置了 `savePath`,则会将新图片保存到指定路径。
阅读全文