小编Chr*_*itz的帖子

OpenCV cv2.imshow 有时显示黑色图像

我正在 ubuntu 20.04、python 3.7 上尝试 OpenCV。我已经运行了以下脚本

import cv2
img = cv2.imread('butterfly.jpg')
cv2.imshow('ImageWindow', img)
cv2.waitKey()
Run Code Online (Sandbox Code Playgroud)

有时我会得到原始蝴蝶图像的可爱图片 ,但有时我会得到一个黑色的小窗口

该行为有点随机,我不确定是什么导致了这个问题。

python opencv

6
推荐指数
1
解决办法
2253
查看次数

PyCharm 找不到 OpenCV 的参考

好吧,在我的机器上安装 OpenCV 和 Numpy 并在 Pycharm 中再次启用并安装它们后,我在编写 OpenCV 代码时仍然遇到错误(没有自动完成)。这是错误:

Cannot find reference 'imshow' in '__init__.py'
Run Code Online (Sandbox Code Playgroud)

它看起来是这样的:

在此输入图像描述

当我运行它时,代码可以工作,但是 Pycharm 无法识别它确实很烦人。我尝试了所有我能想到的解决方案,但它仍然存在。我卸载并重新安装了所有内容(多次),设置了不同的解释器,但问题仍然存在。我还尝试安装不同版本的 Python 和 OpenCV,但没有任何效果。有任何想法吗?

python opencv pycharm

6
推荐指数
0
解决办法
1539
查看次数

如何在 Python 中以尽可能高的质量将 PDF 转换为 JPG/PNG?

我想将 PDF 转换为图像,以便可以对其进行 OCR。但在转换过程中质量会下降。

使用 Python 将 PDF 转换为图像(JPG/PNG)似乎有两种主要方法 - pdf2imageImageMagick / Wand

#pdf2image (altering dpi to 300/600 etc does not seem to make a difference):
pages = convert_from_path("page.pdf", dpi=300)
    for page in pages:
        page.save("page.jpg", 'JPEG')

#ImageMagick (Wand lib)
with Image(filename="page.pdf", resolution=300) as img:
    img.compression_quality = 100
    img.save(filename="page.jpg")
Run Code Online (Sandbox Code Playgroud)

但如果我只是在 Mac 上截取 PDF 的屏幕截图,质量会比使用任何一种 Python 转换方法都要高。

看到这一点的一个好方法是在生成的图像上运行 Tesseract OCR - 两种 Python 方法都给出平均结果,而屏幕截图给出完美结果。(我尝试过 PNG 和 JPG。)

假设我有无限的时间、计算能力和存储空间。我只对图像质量和 OCR 输出感兴趣。完美的图像触手可及,但却无法在代码中生成,这是令人沮丧的。

这里发生了什么?有没有更好的方法来转换 PDF?有没有办法可以更直接地控制?是什么让屏幕截图比实际转换效果更好?

python image imagemagick wand

6
推荐指数
1
解决办法
7394
查看次数

区分文档的图像和另一个图像

我试图区分文本文档的图像和非文本文档的另一个图像。我想编写一个方法,DOCUMENT如果图像是文档的图像或IMAGE不是文档的图像,则返回该方法。

文本文档的示例图像

在此输入图像描述

非文本文档的示例图像

在此输入图像描述

有什么方法可以做到这一点?我应该使用霍夫线变换并查看图像中是否有水平直线?

我正在考虑的方法

  1. 对图像进行霍夫变换。仅考虑水平线。如果太多(某个预定义的阈值),那么我可以说它是文本文档的图像
  2. 检测白色背景上是否有大量黑色文本。然后我可以有信心地说,这是一个文本文档的图像。(但我不知道该怎么做)

python opencv classification machine-learning computer-vision

5
推荐指数
1
解决办法
731
查看次数

OpenCV 无法连接到 X 服务器:

当我尝试使用 cv2.imshow() 时,收到一条错误消息,指出它无法连接到 X 服务器。我在本地运行此程序,在 Windows 命令提示符中使用 bash。没有服务器、没有VPN等。

Python 3.4、CV2 3.4

img = cv2.imread(fileName)
cv2.imshow("Image", img)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

python windows opencv

5
推荐指数
1
解决办法
3409
查看次数

使用 python 从通过 USB 连接的相机获取实时流

我想从通过 USB 与我的计算机连接的相机抓取实时图像。

我正在使用带有 USB 端口的工业相机。

在设备管理器中,相机会显示其名称和 ID,因此我认为它已连接到 PC。

我运行了“findcam”程序,但它没有显示任何相机的存在

import cv2

cap = cv2.VideoCapture(0)


while True:
    ret, frame = cap.read()
    cv2.imshow('Live Video', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

我尝试的给定代码在我的笔记本电脑上为网络摄像头运行,但是当我在带有外部摄像头的电脑上运行相同的代码时。

它不断显示错误。

错误:

Traceback (most recent call last):
  
File "C:/Users/Admin/PycharmProjects/industrialcamera/ICvideocapture.py", line 11, in <module>

cv2.imshow('Live Video', frame)

cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:352: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
Run Code Online (Sandbox Code Playgroud)

我尝试更改索引 -1 , 0 , 1 但错误是恒定的

请帮忙查找,这是我的电脑问题还是相机问题,或者是他们的任何其他流媒体方式(在Python中)

谢谢

python opencv industrial computer-vision

5
推荐指数
1
解决办法
6880
查看次数

为什么使用 PIL 与 OpenCV 加载时图像的宽度和高度会颠倒?

我正在使用PILOpenCV包加载图像。使用 加载图像时的高度和宽度与使用 加载图像时的高度和宽度相反。以下是打印使用这两个包加载的图像的高度和宽度的代码。PILcv2

\n
file = \'conceptual_captions/VL-BERT/data/conceptual-captions/val_image/00002725.jpg\'\n# load image using PIL\nimport PIL.Image\npil = PIL.Image.open(file).convert(\'RGB\')\nw, h = pil.size\nprint("width: {}, height: {}".format(w, h))\n
Run Code Online (Sandbox Code Playgroud)\n

打印输出\nwidth: 1360, height: 765

\n
# now using cv2\nimport cv2\nim = cv2.imread(file)\nprint("height, width, channels: {}".format(im.shape)) \n
Run Code Online (Sandbox Code Playgroud)\n

打印输出height, width, channels: (1360, 765, 3)

\n

我下载了图像并使用 Mac 上的信息选项检查了图像的大小。信息有width = 765height =\xe2\x80\x8a1360,与方法报告的相同cv2。为什么PIL给出错误的图像尺寸?

\n

当图像非常少时就会出现此问题。我链接的图像就是这样的一张图像。对于其余图像,PIL和报告的高度和宽度cv2是相同的。

\n

python opencv numpy image python-imaging-library

5
推荐指数
1
解决办法
3352
查看次数

如何使用多张图片制作一张图片?

我有这些图像,所有图像中都有阴影。我的目标是使用这三个图像制作没有阴影的汽车的单个图像:

在此输入图像描述

最后,如何才能得到如下所示的这种图像:

在此输入图像描述

任何形式的帮助或建议表示赞赏。

编辑

根据评论,我使用np.maximum并轻松实现了我的目标:

import cv2
import numpy as np

img_1 = cv2.imread('1.png', cv2.COLOR_BGR2RGB)
img_2 = cv2.imread('2.png', cv2.COLOR_BGR2RGB)

img = np.maximum(img_1, img_2)

cv2.imshow('img1', img_1)
cv2.imshow('img2', img_2)

cv2.imshow('img', img)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

python opencv

5
推荐指数
1
解决办法
223
查看次数

使用 EasyOcr 时出现未知的 OpenCV 异常

代码:

import easyocr

reader = easyocr.Reader(['en'])
result = reader.readtext('R.png')
Run Code Online (Sandbox Code Playgroud)

输出:

CUDA not available - defaulting to CPU. Note: This module is much faster with a GPU.

cv2.error: Unknown C++ exception from OpenCV code

Run Code Online (Sandbox Code Playgroud)

我非常感谢任何支持!

python opencv image-processing easyocr

5
推荐指数
1
解决办法
4005
查看次数

opencv python imutils.grab_contours 和排序方法在 java/scala api 中不可用 我的 scala 代码实现不会产生相同的结果

我是 OpenCV 新手,按照本教程 ,这里是 Python 代码

   from imutils import paths
   import numpy as np
   import imutils
   import cv2
   import os
   rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (13, 5))
   sqKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (21, 21))
   image = cv2.imread("src/main/resources/passport/passport.jpg")
   image = imutils.resize(image, height=600)
   gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

   gray = cv2.GaussianBlur(gray, (3, 3), 0)
   blackhat = cv2.morphologyEx(gray, cv2.MORPH_BLACKHAT, rectKernel)

   gradX = cv2.Sobel(blackhat, ddepth=cv2.CV_32F, dx=1, dy=0, ksize=-1)
   gradX = np.absolute(gradX)
   (minVal, maxVal) = (np.min(gradX), np.max(gradX))
   gradX = (255 * ((gradX - minVal) / (maxVal - minVal))).astype("uint8")
      gradX …
Run Code Online (Sandbox Code Playgroud)

python opencv scala computer-vision imutils

5
推荐指数
0
解决办法
95
查看次数