使用VS2019软件安装好opencv库
1.简单读取图片和显示图片
#include#include using namespace cv; int main(int argc, char** argv) { Mat image = imread("1.jpg"); //读取图片 if (image.empty()) { //图片为空 printf("could not load image...n"); return -1; } //namedWindow("test_opencv_setup", 0); imshow("lena", image); //显示图片,lena表示显示图片的名字 waitKey(0); return 0; }
结果:
2.得到图片灰度图
#include#include using namespace cv; //读取灰度图片 int main(int argc, char** argv) { //Mat image = imread("1.jpg", 0); //直接读取灰度格式图片(方法1) Mat image = imread("1.jpg"); Mat dst; cvtColor(image, dst, COLOR_BGR2GRAY);//先读图片,再转化为灰度图片(方法2) if (dst.empty()) { //图片为空 printf("could not load image...n"); return -1; } //namedWindow("test_opencv_setup", 0); imshow("lena", dst); //显示图片 waitKey(0); return 0; }
结果:
3.腐蚀和膨胀操作
#include#include using namespace cv; int main(int argc, char** argv) { Mat src = imread("4.jpg"); imshow("src", src); //原图显示 Mat dst1, dst2; Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); erode(src, dst1, element); imshow("erode", dst1); //腐蚀图显示 dilate(src, dst2, element); imshow("dilate", dst2); //膨胀图显示 waitKey(0); return 0; }
结果:
4.滤波处理
#include#include using namespace std; using namespace cv; //滤波:去噪,外界的干扰可能会掩盖图像的一些特征,使得图像变得模糊,使用滤波可以让图像特征更加明显 int main() { Mat src = imread("1.jpg"); imshow("src", src); Mat dst; blur(src, dst, Size(7, 7)); //1.输入图像,2.输出图像,3.进行滤波时选择小矩阵的大小(注意要要是n*n的矩阵,且n为奇数)。 imshow("blur", dst); //显示滤波图片 waitKey(0); return 0; }
结果:
5.边缘检测
#include#include using namespace std; using namespace cv; int main() { Mat src = imread("3.jpg"); namedWindow("src", WINDOW_NORMAL); imshow("src", src); Mat dst; cvtColor(src, src, COLOR_BGR2GRAY); //灰度化 blur(src, src, Size(3, 3)); //滤波 Canny(src, dst, 3, 9, 3); //边缘检测 namedWindow("dst", WINDOW_NORMAL); imshow("dst", dst); imwrite("canny.jpg", dst); //保存图片 waitKey(0); return 0; }



