你想要实现的东西,是别人在前面探路出来的,在此感谢@https://blog.csdn.net/weixin_46135347这位大佬详细的过程,我只是添加了一些步骤。其实跟这位大佬没啥区别。。。。就多了个WeChat_qrcode模块
我要实现opencv4.5.1 + contrib4.5.1 + WeChat_QRcode(这个选作)+ 测试代码+vs2019
请先大概看一遍,然后再做。
这个压缩文档还有一个 utf8’'MSBuild.zip 我做的忘了放进去,后面有作用,先不管他也可以。
1,(建立)先在你选择的盘。建立 opencv 文件夹,然后这个里面建立再建立一个 contrib_new 文件夹
2,(剪切)然后从All文件夹剪切三个文件夹就到这个 opencv 文件夹
3,(删)删除掉重复命名的文件夹,往前挪屋
下面这个图片就把opencv-videoio_ffmpeg451_64.dll复制就行,其他两个dll文件不用!!!!!!!!
C:\Users\“你的用户名”\AppData\Local\Microsoft
1,关掉vs2019 ! ! ! ! ! ! !
2,重新打开刚刚的test.sln
在重现点 configure,若出现这样说明你上面弄对了。你可以跟第一次点configure不一样的错误,嘻嘻
下面这个图片路径需要改,要不然一直出错。
把图片中的路径改成:E:/opencv/opencv_contrib-master/modules
要不然cmake识别不了,你看一下你填写的这个路径上面是不是还有一个路径也用的是这个符号 “/”
若出现上面这个图片的情况,说明你已经成功搞对了。现在搞下面部分了。加油!
每次都要关闭这个txt文档,更新日志
“去这个网站下载文件”指的是前面那个网址,而不是这个路径
依次类推,按照这个txt文档要求的全部替换昂,小宝贝
删除:··········\vc14\bin 这个之前加的环境变量
增加:··········\vc16\bin 这个新的环境变量
!!!先调 Debug 和 X64
我下面图片全是Debug和x86是不对的
E:\opencv\contrib_new\install\include
E:\opencv\contrib_new\install\include\opencv2
E:\opencv\contrib_new\install\x64\vc16\lib
opencv_world341d.lib
opencv_world341.lib
检查一下:1,链接器-输入-附加依赖项 2,VC ++ 目录是不是跟contrib_new有关。若不是,则改到contrib_new相关目录,如图所示
//这个代码会把二维码(多个二维码也可以)里面的网址解析出来,并在二维码周围有绿框框着。
#include
#include
#include
using namespace std;
using namespace cv;
int main()
{
//加载图片解码
Ptr detector;
string detect_prototxt = "E:/opencv/model/detect.prototxt";//这个路径需要改
string detect_caffe_model = "E:/opencv/model/detect.caffemodel";
string sr_prototxt = "E:/opencv/model/sr.prototxt";
string sr_caffe_model = "E:/opencv/model/sr.caffemodel";
Mat img = imread("wechat.jpg");//你随便选个二维码图片(可以是一个图片里有多个二维码),然后再该项目路径保存二维码图片就行,这个是相对路径,你也可以是绝对路径
try
{
detector = makePtr(detect_prototxt, detect_caffe_model,
sr_prototxt, sr_caffe_model);
}
catch (const std::exception& e)
{
cout <<
"\n---------------------------------------------------------------\n"
"Failed to initialize WeChatQRCode.\n"
"Please, download 'detector.*' and 'sr.*' from\n"
"https://github.com/WeChatCV/opencv_3rdparty/tree/wechat_qrcode\n"
"and put them into the current directory.\n"
"---------------------------------------------------------------\n";
cout << e.what() << endl;
return 0;
}
vector vPoints;
vector strDecoded;
strDecoded = detector->detectAndDecode(img, vPoints);
for (int i = 0; i < strDecoded.size(); i++)
{
cout << "decode-" << i + 1 << ": " << strDecoded[i] << endl;
Point pt1 = Point((int)vPoints[i].at(0, 0), (int)vPoints[i].at(0, 1));
Point pt2 = Point((int)vPoints[i].at(1, 0), (int)vPoints[i].at(1, 1));
Point pt3 = Point((int)vPoints[i].at(2, 0), (int)vPoints[i].at(2, 1));
Point pt4 = Point((int)vPoints[i].at(3, 0), (int)vPoints[i].at(3, 1));
line(img, pt1, pt2, Scalar(0, 255, 0), 2);
line(img, pt2, pt3, Scalar(0, 255, 0), 2);
line(img, pt3, pt4, Scalar(0, 255, 0), 2);
line(img, pt4, pt1, Scalar(0, 255, 0), 2);
putText(img, strDecoded[i], pt1, 0, 0.5, Scalar(255, 0, 0), 2);
}
imshow("wechat_qrcode", img);
waitKey();
imwrite("result.png", img);
}
在这个代码行里有一个地方注释写着:“这个路径需要改”。这个路径是之前新建opencv文件夹里的model文件夹路径赋值粘贴过来就行,后面的文档不要动
E:\opencv\model
这个博客大量参考好多个大佬弄出来的,谢谢他们的分享,要不然也不会有这个。。。
如果对你觉得有用麻烦你点赞,谢谢
在评论区踊跃交流吧伙伴们。
下面分享参考的博客:
https://blog.csdn.net/qq_41175905/article/details/80560429
https://blog.csdn.net/weixin_46135347/article/details/114190250?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161555112016780262577681%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161555112016780262577681&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-1-114190250.pc_search_result_cache&utm_term=opencv4.5.1+%E4%BF%9D%E5%A7%86