OpenCV [c++](图像处理基础示例小程序汇总)
推荐 原创
NCUTer 2023-04-04 14:18:49
文章标签 Image 图像处理 文章分类 计算机视觉 人工智能 在51CTO的第一篇博文 阅读数1467
一、图像读取与显示
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
string path = "Resources/lambo.png";//图片的路径名
Mat img = imread(path);//将图片加载后赋值到图像变量img中
//if (path.empty()) { cout << "file not loaded" << endl; }
//检查文件是否打开 没打开时执行打印语句
//namedWindow("Image", WINDOW_FREERATIO);//创建一个名为Image的可调节的窗口
imshow("Image", img);//创建一个窗口来显示图像img
waitKey(0);//不断刷新图像
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- waitKey()函数的功能是不断刷新图像,频率为delay,单位是ms。
- delay为0时,则会一直显示这一帧。
- delay不为0时,则在显示完一帧图像后程序等待“delay"ms再显示下一帧图像。
二、图像预处理[高斯滤波、canny边缘检测、膨胀腐蚀]
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
void main() {
string path = "Resources/test.png";
Mat img = imread(path);
Mat imgGray,imgBlur,imgCanny,imgDil,imgErode;
//将照片转换为灰度
cvtColor(img, imgGray, COLOR_BGR2GRAY);
//高斯模糊
GaussianBlur(imgGray, imgBlur, Size(3, 3), 3, 0);
//Canny边缘检测器 一般在使用Canny边缘检测器之前会做一些模糊处理
Canny(imgBlur, imgCanny, 25, 75);
//创建一个可以使用膨胀的内核
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
//图像膨胀
dilate(imgCanny, imgDil, kernel);
//图像侵蚀
erode(imgDil, imgErode, kernel);
//结果呈现
imshow("Image", img);
imshow("Image Gray", imgGray);
imshow("Image Blur", imgBlur);
imshow("Image Canny", imgCanny);
imshow("Image Dilation", imgDil);
imshow("Image Erode", imgErode);
waitKey(0);
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
Canny 边缘检测
Canny(imgBlur, imgCanny, 25, 75);
- 1.
第3和第4个参数分别代表底阈值和高阈值,其中底阈值常取高阈值的1/2或1/3
三、图像裁剪
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
void main() {
string path = "Resources/test.png";
Mat img = imread(path);
Mat imgResize,imgCrop;
//调整图像大小
//cout << img.size() << endl;//查看原图像的大小
//resize(img, imgResize, Size(640, 480));//按自定义的宽度与高度缩放
resize(img, imgResize, Size(),0.5,0.5);//按比例缩放
//图像裁剪
Rect roi(200, 100, 300, 300);
//前面两个参数为距左上原点的x方向与y方向的距离,后两个参数为延伸的x,y长度
imgCrop = img(roi);
imshow("Image", img);
imshow("Image Resize", imgResize);
imshow("Image Crop", imgCrop);
waitKey(0);
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
void cv::resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation = INTER_LINEAR)
调整图像的大小。函数 resize 将图像 src 的大小缩小到或最大到指定的大小。请注意,不考虑初始 dst 类型或大小。相反,大小和类型是从 src、dsize、fx 和 fy 派生的。文章来源:https://www.toymoban.com/news/detail-765037.html
文章来源地址https://www.toymoban.com/news/detail-765037.html
四、绘制形状和添加文本
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
//Blank Image
Mat img(512, 512, CV_8UC3, Scalar(255, 255, 255));
circle(img, Point(256, 256), 155, Scalar(0, 69, 255), FILLED);
rectangle(img, Point(130, 226), Point(382, 286), Scalar(255, 255, 255), -1);
line(img, Point(130, 296), Point(382, 296), Scalar(255, 255, 255), 2);
putText(img, "Murtaza's Workshop", Point(137, 262), F
到了这里,关于OpenCV [c++](图像处理基础示例小程序汇总)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!