我有一个.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当然是一种选择,虽然我一直在寻找更多的东西可缓存.
是否可以从URL加载skimage(numpy矩阵)格式的图像而无需创建临时文件?
skimage本身使用临时文件:https : //github.com/scikit-image/scikit-image/blob/master/skimage/io/util.py#L23
有什么方法可以直接传递urlopen(url).read()到imread.imread()(或任何其他图像阅读库)?
使用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)
原始的图像是这样的:

但我得到这张图片:

我目前使用的是 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) 我试图在我的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上.
我有一个灰度图像。
当我将其加载到 MATLAB 中时,我发现灰度级与原始图像不匹配。用 MATLAB 读入的图像比原始图像更亮。我究竟做错了什么?我该如何解决?
左一张是matlab读的,右一张是原创的
我一直在尝试使用 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 文件夹中,但无论如何它都不起作用,我更喜欢使用资产之一。任何人都可以帮助我并告诉我如何找到图像的正确路径?
谢谢
我有一个从网上下载的图像(验证码)。

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

目前,代码除了再次加载文字外什么也没做:
captchaImg = cv2.imread('captcha1.png')
cv2.imwrite("captcha2.png", captchaImg)
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用选项 0、1、2、3 加载,但结果是相同的。
我正在尝试从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.拜托,有人能帮帮我吗?
我有这样的代码;
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:"进行阅读;
您可能没有阅读权限.
我该如何解决这个问题?
谢谢,
imread ×10
opencv ×7
python ×6
image ×3
android ×2
matlab ×2
alpha ×1
anaconda ×1
c++ ×1
direction ×1
libpng ×1
performance ×1
scikit-image ×1
scikit-learn ×1
svm ×1
tar ×1
transparency ×1
urllib2 ×1