我正在 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)
有时我会得到原始蝴蝶图像的可爱图片 ,但有时我会得到一个黑色的小窗口。
该行为有点随机,我不确定是什么导致了这个问题。
好吧,在我的机器上安装 OpenCV 和 Numpy 并在 Pycharm 中再次启用并安装它们后,我在编写 OpenCV 代码时仍然遇到错误(没有自动完成)。这是错误:
Cannot find reference 'imshow' in '__init__.py'
Run Code Online (Sandbox Code Playgroud)
它看起来是这样的:
当我运行它时,代码可以工作,但是 Pycharm 无法识别它确实很烦人。我尝试了所有我能想到的解决方案,但它仍然存在。我卸载并重新安装了所有内容(多次),设置了不同的解释器,但问题仍然存在。我还尝试安装不同版本的 Python 和 OpenCV,但没有任何效果。有任何想法吗?
我想将 PDF 转换为图像,以便可以对其进行 OCR。但在转换过程中质量会下降。
使用 Python 将 PDF 转换为图像(JPG/PNG)似乎有两种主要方法 - pdf2image和ImageMagick / 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?有没有办法可以更直接地控制?是什么让屏幕截图比实际转换效果更好?
我试图区分文本文档的图像和非文本文档的另一个图像。我想编写一个方法,DOCUMENT如果图像是文档的图像或IMAGE不是文档的图像,则返回该方法。
文本文档的示例图像
非文本文档的示例图像
有什么方法可以做到这一点?我应该使用霍夫线变换并查看图像中是否有水平直线?
我正在考虑的方法
python opencv classification machine-learning computer-vision
当我尝试使用 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) 我想从通过 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中)
谢谢
我正在使用PIL和OpenCV包加载图像。使用 加载图像时的高度和宽度与使用 加载图像时的高度和宽度相反。以下是打印使用这两个包加载的图像的高度和宽度的代码。PILcv2
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))\nRun Code Online (Sandbox Code Playgroud)\n打印输出\nwidth: 1360, height: 765
# now using cv2\nimport cv2\nim = cv2.imread(file)\nprint("height, width, channels: {}".format(im.shape)) \nRun Code Online (Sandbox Code Playgroud)\n打印输出height, width, channels: (1360, 765, 3)
我下载了图像并使用 Mac 上的信息选项检查了图像的大小。信息有width = 765和height =\xe2\x80\x8a1360,与方法报告的相同cv2。为什么PIL给出错误的图像尺寸?
当图像非常少时就会出现此问题。我链接的图像就是这样的一张图像。对于其余图像,PIL和报告的高度和宽度cv2是相同的。
我有这些图像,所有图像中都有阴影。我的目标是使用这三个图像制作没有阴影的汽车的单个图像:
最后,如何才能得到如下所示的这种图像:
任何形式的帮助或建议表示赞赏。
编辑
根据评论,我使用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) 代码:
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)
我非常感谢任何支持!
我是 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)