C++ OpenCV使用Image Watch来查看GPU灰度化的Lena
在 之前的文章 中已经写过了如何新建OpenCV空项目,也介绍过OpenCV最基本的三个操作了,我在OpencvProject中定义了一个头文件cv.hpp,里面包含的头文件如下:
#include <opencv2/opencv.hpp>
#include <opencv2/opencv_modules.hpp>
#include <opencv2/dnn.hpp>
#include <opencv2/cudaarithm.hpp>
#include <opencv2/cudaoptflow.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/cudafeatures2d.hpp>
#include <opencv2/cudaobjdetect.hpp>
#include <opencv2/cudawarping.hpp>
#include <opencv2/cudafilters.hpp>
#include <bits/stdc++.h>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2\imgproc\types_c.h>
using namespace std;
using namespace cv;
using namespace cv::cuda;
using namespace cv::dnn;
然后我写的 Hello Lena 是把图像upload传给GPU,在GPU中调用cuda::cvtColor()函数将图像进行灰度化处理后再download传递回来,main.cpp中的内容如下:
#include "cv.hpp"
string IMG_PATH = "D:/Code/CppCode/OpencvProject/img/";
int main() {
cout << "Built with OpenCV " << CV_VERSION << endl;
Mat src_host = imread(IMG_PATH+"lena.png",1);
GpuMat src, gray;
src.upload(src_host);
cuda::cvtColor(src, gray,COLOR_BGR2GRAY);
Mat gray_host;
gray.download(gray_host);
imshow("src",src_host);
imshow("gray",gray_host);
imwrite(IMG_PATH+"gray_lena.png",gray_host);
waitKey(0);
return 0;
}
我在菜单栏→拓展→管理拓展→联机中下载了Image Watch 2019,重启VS2019 安装完成后可在菜单栏→视图→其他窗口→Image Watch中找到。这样在程序中的waitKey()处设置断点,就能在Image Watch中看到原图像和GPU灰度化处理的图像了,而不是弹出两个图像窗口。 在相应的目录也能找到 imwrite 保存的灰度化图像。
![](/wp-content/themes/Giligili/img/gr.png)
原文链接:C++ OpenCV使用Image Watch来查看GPU灰度化的Lena
t0ur1st 版权所有,转载请注明出处。
还没有任何评论,你来说两句吧!