我imread()在使用jpg文件的Windows 7上遇到了Matlab(2014)和OpenCV(3.0)中的函数问题.
通过读取相同的文件jpg和相同的像素,我没有相同的值.
这是我的2个代码:(OpenCV代码后跟Matlab代码)和我的值(模式调试在OpenCV中看到,键盘在Matlab中)
#include <opencv2\opencv.hpp>
#include <cstdio>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("test.jpg");
uchar pb = img.at<Vec3b>(0, 0).val[0];
uchar pg = img.at<Vec3b>(0, 0).val[1];
uchar pr = img.at<Vec3b>(0, 0).val[2];
int d = img.depth();
int t = img.type();
}
Run Code Online (Sandbox Code Playgroud)
价值观:
pixel [0,0] = (147,174,204); // = index(1,1) in the image.
d = 0;
t = 16;
Run Code Online (Sandbox Code Playgroud)
代码Matlab:
img = imread('test.jpg');
img(1,1,:)
whos img
Run Code Online (Sandbox Code Playgroud)
价值观:
ans(:,:,1) =
148
ans(:,:,2) =
174
ans(:,:,3) = …Run Code Online (Sandbox Code Playgroud) 我在Eclipse Mars中配置了OpenCV 3.1.0.这些是我的配置,
G ++包括:D:/ opencv/build/install/include; GCC包括:D:/ opencv/build/install/include
链接库:libopencv_core310,libopencv_highgui310
链接器库路径:D:/ opencv/build/lib(此目录中的文件类似于libopencv_core310.dll.a)
我收到这样的错误,
imageRead.cpp:15: undefined reference to `cv::imread(cv::String const&, int)'
Run Code Online (Sandbox Code Playgroud)
这是我的imageRead.cpp文件,
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace std;
using namespace cv;
int main(int argc, const char** argv) {
Mat img = imread("D:/sample.jpg", CV_LOAD_IMAGE_UNCHANGED);
if (img.empty()) {
cout << "Error: Image cannot be loaded." << endl;
system("pause");
return -1;
}
namedWindow("Image Window", CV_WINDOW_AUTOSIZE);
imshow("Image Window", img);
if (waitKey() == 27) {
return -1;
}
destroyWindow("Image Window"); …Run Code Online (Sandbox Code Playgroud) 我非常擅长skimage使用Python中的scikit-image()库进行图像处理(几分钟前开始!).我以前imread读过一个图像文件numpy.ndarray.该阵列是3维的,其中第三维的尺寸是3(即,对于图像的红色,绿色和蓝色分量中的每一个,一个).
rgb_image = imread("input_rgb_image.jpg")
rgb_image.shape # gives (1411L, 1411L, 3L)
Run Code Online (Sandbox Code Playgroud)
我试图将绿色通道提取为:
green_image = rgb_image[:,:,1]
Run Code Online (Sandbox Code Playgroud)
但是当我将这个图像矩阵写入输出文件时:
imsave("green_output_image.jpg",green_image)
Run Code Online (Sandbox Code Playgroud)
我得到的图像看起来并不真实!
这是我的代码中出现问题的部分。它应该计算图片中绿色像素的数量:
img = Image.open('path.tif')
BLACK_MIN = np.array([0, 20, 20], np.uint8)
BLACK_MAX = np.array([120, 255, 255], np.uint8)
imgg = cv2.imread(img, 1)
dst = cv2.inRange(imgg, BLACK_MIN, BLACK_MAX)
no_black = cv2.countNonZero(dst)
print('The number of black pixels is: ' + str(no_black))
Run Code Online (Sandbox Code Playgroud) 我使用OpenCV 3.0和Ubuntu 14.04.我正在尝试使用opencv在ubuntu上编译一些代码.我收到错误
"错误:'imread'不是'cv'的成员"
由于我之前的搜索知识,我尝试通过添加"highgui.h"进行编译.
我用:
$g++ main.cpp HOG.cpp HOGFeaturesOfBlock.cpp -I/usr/local/include/opencv -lml -lcvaux -highgui -lcv -lcxcore -o featureExtractor
Run Code Online (Sandbox Code Playgroud)
在终端上编译.
有什么建议?问候.能够.
我想以这种方式使用OpenCV 从qrc中读取图像imread():
Mat img = imread(":/TempIcons/logo.png");
Run Code Online (Sandbox Code Playgroud)
但最终img大小为[0x0].我也尝试过:
Mat img = imread("qrc://TempIcons/logo.png");
Run Code Online (Sandbox Code Playgroud)
但我得到的大小是一样的.我不想在a中加载图像QImage然后在a 中转换它cv::Mat.有没有办法以简单的方式做到这一点?如果是的话,我该怎么办?
谢谢
我正在尝试将图像加载为灰度,如下所示:
from skimage import data
from skimage.viewer import ImageViewer
img = data.imread('my_image.png', as_gray=True)
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用img.shape它检查它的形状,结果证明它是一个三维的,而不是二维的数组.我究竟做错了什么?
我目前使用的是 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) 我加载了图像并尝试在图像中绘制一个红点
img=mpimg.imread('./images/im00001.jpg')
red = [0,0,255]
# Change one pixel
img[ 0.,-26.10911452,0. ]=red
imgplot = plt.imshow(img)
Run Code Online (Sandbox Code Playgroud)
但是发生以下错误
ValueError:分配目标是只读的