标签: imread

让cv2.imread从文件对象或类似内存流的数据中读取图像(这里是非提取的tar)

我有一个.tar包含数百张图片的文件(.png).我需要通过opencv处理它们.

我想知道 - 出于效率原因 - 是否可以在不经过光盘的情况下处理它们.换句话说,我想从与tar文件相关的内存流中读取图片.

考虑一下

 import tarfile
 import cv2

 tar0 = tarfile.open('mytar.tar')
 im = cv2.imread( tar0.extractfile('fname.png').read() )
Run Code Online (Sandbox Code Playgroud)

最后一行不能正常工作,因为imread需要文件名而不是流.

考虑直接从tar流中读取这种方式可以例如针对文本实现(参见例如此SO问题).


有任何建议用正确的png编码打开流?

解包到ramdisk当然是一种选择,虽然我一直在寻找更多的东西可缓存.

python performance opencv tar imread

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

将JPEG从URL加载到skimage,而无需临时文件

是否可以从URL加载skimage(numpy矩阵)格式的图像而无需创建临时文件?

skimage本身使用临时文件:https : //github.com/scikit-image/scikit-image/blob/master/skimage/io/util.py#L23

有什么方法可以直接传递urlopen(url).read()imread.imread()(或任何其他图像阅读库)?

python urllib2 scikit-learn scikit-image imread

5
推荐指数
2
解决办法
3703
查看次数

图像方向(python + openCV)

使用Python和OpenCV,我尝试读取大小为(3264 * 2448)的图像,但是生成的大小始终为(2448 * 3264)。这意味着图像方向改变了90度。代码如下:

img1 = cv2.imread("C:\\Users\\test.jpg", 0) 
cv2.namedWindow("test", 0) 
cv2.imshow("test", img1)
Run Code Online (Sandbox Code Playgroud)

原始的图像是这样的:

在此处输入图片说明

但我得到这张图片:

在此处输入图片说明

python opencv image direction imread

5
推荐指数
2
解决办法
3986
查看次数

使用 open cv imread 时出现“libpng 错误:读取错误”

我目前使用的是 Anaconda 4.3.27、Python 3.6.2 和 OpenCV 3.3.0

当我尝试时

img1 = cv2.imread('D:\Images\3D-Matplotlib.png')
img2 = cv2.imread('D:\Images\mainsvmimage.png')
Run Code Online (Sandbox Code Playgroud)

我得到libpng error: Read Error并出现一个弹出窗口,表明 Python 停止工作。我已经尝试用“\\”和“/”替换“\”,但在这些情况下也会出现相同的错误。当我尝试读取 jpg 而不是 png 时,我没有收到错误。有人知道这里可能有什么问题吗?

提前致谢!

编辑:

cv2.imwrite 也给出错误:

libpng error: Write Error
Run Code Online (Sandbox Code Playgroud)

python opencv libpng anaconda imread

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

C++ OpenCV imread在Android中不起作用

我试图在我的C++代码中读取图像

LOGD("Loading image '%s' ...\n", (*inFile).c_str());;
Mat img = imread(*inFile, CV_LOAD_IMAGE_GRAYSCALE);
CV_Assert(img.data != 0);
Run Code Online (Sandbox Code Playgroud)

并获得以下输出:

09-25 17:08:24.798: D/IRISREC(12120): Loading image '/data/data/com.example.irisrec/files/input/osoba1.jpg' ...
09-25 17:08:24.798: E/cv::error()(12120): OpenCV Error: Assertion failed (img.data != 0) in int wahet_main(int, char**), file jni/wahet.cpp, line 4208
Run Code Online (Sandbox Code Playgroud)

该文件存在.但奇怪的是,如果我尝试使用根文件浏览器预览图像,它只是黑色.我手动复制了文件.

编辑:

该代码在Windows下以.png和.jpg格式正常工作.我只是想将现有的Iris C++ C++项目移植到Android上.

c++ android opencv imread

4
推荐指数
2
解决办法
4906
查看次数

MATLAB imread bmp 图像不正确

我有一个灰度图像。

当我将其加载到 MATLAB 中时,我发现灰度级与原始图像不匹配。用 MATLAB 读入的图像比原始图像更亮。我究竟做错了什么?我该如何解决?

左一张是matlab读的,右一张是原创的

在此输入图像描述

原始 bmp 文件可以在这里下载。

matlab image image-processing imread

4
推荐指数
1
解决办法
4098
查看次数

使用 OpenCV 从 Android 中的资产文件夹加载图像

我一直在尝试使用 Android 中的 OpenCV 3.0 加载放置在资产文件夹中的图像。我在这里阅读了很多答案,但我无法弄清楚我做错了什么。

“my image.jpg”直接放在Android Studio 创建的assets 文件夹中。这是我正在使用的代码。我已经检查过并且库已正确加载。

        Mat imgOr = Imgcodecs.imread("file:///android_asset/myimage.jpg");
        int height = imgOr.height();
        int width = imgOr.width();
        String h = Integer.toString(height);
        String w = Integer.toString(width);

        if (imgOr.dataAddr() == 0) {
            // If dataAddr() is different from zero, the image has been loaded
            // correctly
            Log.d(TAG, "WRONG UPLOAD");
        }

        Log.d(h, "height");
        Log.d(w, "width");
Run Code Online (Sandbox Code Playgroud)

当我尝试运行我的应用程序时,这就是我得到的:

08-21 18:13:32.084 23501-23501/com.example.android D/MyActivity: WRONG UPLOAD
08-21 18:13:32.085 23501-23501/com.example.android D/0: height
08-21 18:13:32.085 23501-23501/com.example.android D/0: width
Run Code Online (Sandbox Code Playgroud)

图像似乎没有尺寸。我猜是因为它没有正确加载。Iva 还尝试加载它并将其放置在 drawable 文件夹中,但无论如何它都不起作用,我更喜欢使用资产之一。任何人都可以帮助我并告诉我如何找到图像的正确路径?

谢谢

android opencv imread

4
推荐指数
1
解决办法
6644
查看次数

OpenCV imread 透明度消失了

我有一个从网上下载的图像(验证码)。

初始图像

当我加载时,opencv它似乎失去了它的属性,或者只是将透明背景与深色/黑色混合:

处理后的图像

目前,代码除了再次加载文字外什么也没做:

captchaImg = cv2.imread('captcha1.png')
cv2.imwrite("captcha2.png", captchaImg)
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用选项 0、1、2、3 加载,但结果是相同的。

python transparency opencv alpha imread

4
推荐指数
1
解决办法
6114
查看次数

使用opencv加载BytesIO映像

我正在尝试从io.BytesIO()结构加载带有OPENCV的图像.最初,代码使用PIL加载图像,如下所示:

image_stream = io.BytesIO()
image_stream.write(connection.read(image_len))
image_stream.seek(0)
image = Image.open(image_stream)
print('Image is %dx%d' % image.size)
Run Code Online (Sandbox Code Playgroud)

我尝试用这样的OPENCV打开:

image_stream = io.BytesIO()
image_stream.write(connection.read(image_len))
image_stream.seek(0)
img = cv2.imread(image_stream,0)
cv2.imshow('image',img)
Run Code Online (Sandbox Code Playgroud)

但似乎imread不处理BytesIO().我收到了一个错误.

我正在使用OPENCV 3.3和Python 2.7.拜托,有人能帮帮我吗?

python opencv imread

4
推荐指数
1
解决办法
6329
查看次数

"无法打开文件"C:"用于阅读;您可能没有阅读权限." MATLAB中的错误

我有这样的代码;

for x = 1:100
    path = sprintf('C:\Users\hasan_000\Documents\MATLAB\Project\Images\%d.jpg', x);
    imgarray = imread(sprintf(path));
end
Run Code Online (Sandbox Code Playgroud)

我有一个文件夹涉及100张图片.我想通过循环自动上传将它们转换为矩阵.

但我得到这个错误:

无法打开文件"C:"进行阅读;
您可能没有阅读权限.

我该如何解决这个问题?

谢谢,

matlab image image-processing svm imread

3
推荐指数
1
解决办法
2612
查看次数