OpenCV显示图片
经过两天的时间,终于把python版和c版的opencv显示图片问题解决了,一把心酸一把泪啊!!!!!下边分享一下解决的过程!
刚开始接触opencv,需要安装opencv:
python版的直接在cmd安装opencv包就行: pip install opencv-python
c语言版要使用vs,安装opencv需要下载opencv安装包,然后解压,配置在控制台配置opencv ,过程如下:
1.新建项目,选择Win32控制台应用程序,名称为项目名称,位置就是存储的位置,然后确定。
2.点击下一步
3.此处需要将“空项目”打钩,将“安全开发生命周期检查”前面的√去掉,点击完成。
4.打开“视图”——“其他窗口”——“属性管理器”,打开后可以看到右边的“属性管理器”的小窗口。
5.如图,打开“Debug|x64”里的 “Microsoft.Cpp.x64.user”,然后打开属性。
6.选择“通用属性”里的“VC++ 目录”,需要将里边的“包含目录”和“库目录”添加路径。
7. “包含目录”添加三个路径:
D:\OpenCV\opencv\build\include
D:\OpenCV\opencv\build\include\opencv
D:\OpenCV\opencv\build\include\opencv2
8.“库目录”需要添加一个路径:
D:\OpenCV\opencv\build\x64\vc14\lib
9.打开“链接器”里的“输入”,需要对附加依赖项添加路径
opencv_world331d.lib
opencv_world331.lib
这样就配置完成了!其实我的配置还是比较顺利的,主要当我导入图片验证图片时,验证opencv安装是否成功时,两个版本都无法读入图像!在网上搜索各种错误,各种调试就是不行(有的说是反斜杠的原因,有的说相对路径和绝对路径的原因,还有图片格式的原因),各种不好使!最后用过各种琢磨终于成功了!,跟大家说说几点注意的原因:
在vs2015中
1.文件路径问题。不管你的运行文件和所要现实的图片是否在一个文件夹,最好都换成绝对路径,这样养成习惯,以后不容易出错!
2.反斜杠问题。对于反斜杠我用的是“/”,即"D:/python37项目/计算机.jpg",因为之前尝试r"D:\python37项目\计算机.jpg"和双斜杠"D:\python37项目\计算机.jpg"都失败了。所以建议用“/”不容易出错。
3.图片命名问题。注意,图片的文件名是不需要带格式的,但在路径中是需要带格式的。
这样就成功了!
#include <opencv2\highgui\highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, const char** argv)
{
Mat img = imread("D:/python37项目/计算机.jpg", CV_LOAD_IMAGE_UNCHANGED);
if
(img.empty())
{
cout << "图像加载失败!"<< endl;
//system("pause");
return -1;
}
//创建一个名字为MyWindow的窗口
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
//在MyWindow的窗中中显示存储在img中的图片
imshow("MyWindow", img);
//等待直到有键按下
waitKey(0);
//销毁MyWindow的窗口
destroyWindow("MyWindow");
return 0;
}
结果如下:
最后最重要的一点!!!关于Python解释器运行opencv读取图片时,路径不能有中文!路径不能有中文!路径不能有中文!
重要的事情说三遍!!!(spyder 和pycharm 我都试过了,切记啊!!!)
代码如下:
import cv2
import numpy as np
img = cv2.imread(“D:/1.jpg”)
emptyImage = np.zeros(img.shape, np.uint8)
emptyImage2 = img.copy()
emptyImage3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#emptyImage3[…]=0
cv2.imshow(“EmptyImage”, emptyImage)
cv2.imshow(“Image”, img)
cv2.imshow(“EmptyImage2”, emptyImage2)
cv2.imshow(“EmptyImage3”, emptyImage3)
cv2.imwrite("./cat2.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 5])
cv2.imwrite("./cat3.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
cv2.imwrite("./cat.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
cv2.imwrite("./cat2.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
cv2.waitKey (0)
结果如下:
希望对你有所帮助!!!