VS+OpenCV实现图像读取,格式化转换,储存、摄像头获取图片等操作 您所在的位置:网站首页 图像输出方式 VS+OpenCV实现图像读取,格式化转换,储存、摄像头获取图片等操作

VS+OpenCV实现图像读取,格式化转换,储存、摄像头获取图片等操作

2023-11-14 03:50| 来源: 网络整理| 查看: 265

文章主要内容实现

(1)在Windows下搭建VS+OpenCV平台。 (2)实现图像读取,格式化转换,储存等操作。 (3)实现图像感兴趣的区域截取。 (4)读取并输出某个像素点的RGB数据。 (5)能使用摄像头获取图片。

1.在Windows下搭建VS+OpenCV平台: 在这里插入图片描述

(2)实现图像读取,格式化转换,储存等操作: 在这里插入图片描述 在这里插入图片描述 (3)实现图像感兴趣的区域截取。 在这里插入图片描述 在这里插入图片描述 (4)读取并输出某个像素点的RGB数据。 调用后面的函数: 在这里插入图片描述

在这里插入图片描述

(5)能使用摄像头获取图片。 在这里插入图片描述 在这里插入图片描述 源代码如下:

#include #include #include #include #include #include #include using namespace std; using namespace cv; void my_mouse_callback(int event,int x, int y, int flags, void *param); //输出RGB数据的函数 string FileLocation(string Location, int num, string EndLocationType); //获取摄像头图片的函数 CvPoint st_point; int blue = 0; int green = 0; int red = 0; CvFont font; int main(int argc, const char * argv[]) { //1、读取图像进行灰度处理 Mat src = imread("image/lena.png"); if (src.empty()){ printf("没有图片"); return -1; } imshow("读取原图",src); //显示图像src //Mat output_image; //定义对象output_image //cvtColor(src,output_image,CV_BGR2HLS); //修改图像src //imshow("图片",output_image); imwrite("image/beautiful.jpg",src); //转换图片格式并保存 //(3) 截取部分图片 Rect rect(100,100,400,400); Mat roi=src(rect); //namedWindow("women"); namedWindow("ROI"); //imshow("women",src); imshow("ROI",roi); //(4)读取并输出某一像素点的RGB数据 const char filename[] = "image/lena.png"; IplImage * image = cvLoadImage(filename); cvInitFont(&font, CV_FONT_HERSHEY_COMPLEX, 1, 1, 0, 2, 8); cvNamedWindow("RGB"); cvSetMouseCallback("RGB", my_mouse_callback, (void *)image); cvShowImage("RGB", image); cvWaitKey(0); cvReleaseImage(&image); cvDestroyWindow("RGB"); //(5)使用摄像头获取图片 //程序说明:1.按下ESC程序退出,2.按下空格键截取图像 Mat srcImage; char c; int temp=0; //计数器 VideoCapture cam(0); if(!cam.isOpened()) exit(0); namedWindow("【拍摄中......】"); while (true) { cam >> srcImage; imshow("【拍摄中......】", srcImage); c = waitKey(30); if (c == ' ') { imwrite(FileLocation("image/",temp,".jpg"),srcImage); temp++; } if (c == 27) break; } return 0; } //下面是(4)(5)需要调用的函数 void my_mouse_callback(int event,int x,int y,int flags,void *param) { IplImage * image = (IplImage *)param; switch (event) { //鼠标离开 case CV_EVENT_LBUTTONDOWN: { //鼠标左键点击事件,记录点击的(x,y) st_point.x = x; st_point.y = y; break; } case CV_EVENT_LBUTTONUP: { //鼠标左键放开事件,读取当前点的像素值RGB unsigned char * ptr = (uchar *)(image->imageData + st_point.x * image->widthStep); blue = (int)(*(ptr + st_point.y)); green = (int)(*(ptr + st_point.y + 1)); red = (int)(*(ptr + st_point.y + 2)); char text[20] = "0"; sprintf(text,"(%d,%d,%d)",blue,green,red); cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有