博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【OpenCV归纳】1 体验OpenCV
阅读量:7100 次
发布时间:2019-06-28

本文共 2450 字,大约阅读时间需要 8 分钟。

#include "highgui.h"int main(int argc,char** argv){     IplImage* img=cvLoadImage(argv[1]);     cvNamedWindow("Test1",CV_WINDOW_AUTOSIZE);     cvShowImage("Test1",img);     cvWaitKey(0);     cvReleaseImage(&img);     cvDestoryWindow("Test1");}

如果是完完全全的OpenCV初学者的话也许argv[1]会让人感到困惑,其实这里也可以用Linux地址来代替的,记得多用一个"\",因为需要转义。cvLoadImage()函数是一个高层调用接口,它通过文件名来确定加载文件的格式,并且该函数将自动分配图像数据结构所需的内存。

#include
#include
void my_mouse_callback(int event, int x, int y, int flags, void* param);CvRect box;bool drawing_box = false;void draw_box(IplImage* img, CvRect rect){ cvRectangle(img, cvPoint(box.x, box.y), cvPoint(box.x + box.width, box.y + box.height), cvScalar(0xff, 0x00, 0x00));}int main(int argc, char* argv[]){ box = cvRect(-1, -1, 0, 0); IplImage* image = cvCreateImage( cvSize(200, 200), IPL_DEPTH_8U, 3); cvZero(image); IplImage* temp = cvCloneImage(image); cvNamedWindow("Box Example"); cvSetMouseCallback("Box Example", my_mouse_callback, (void*)image); while (1) { cvCopyImage(image, temp); if (drawing_box) draw_box(temp, box); cvShowImage("Box Example", temp); if (cvWaitKey(15) == 27) break; } cvReleaseImage(&image); cvReleaseImage(&temp); cvDestroyWindow("Box Example");}void my_mouse_callback(int event, int x, int y, int flags, void* param){ IplImage* image = (IplImage*)param; switch (event) { case CV_EVENT_MOUSEMOVE: { if (drawing_box) { box.width = x - box.x; box.height = y - box.y; } } break; case CV_EVENT_LBUTTONDOWN: { drawing_box = true; box = cvRect(x, y, 0, 0); } break; case CV_EVENT_LBUTTONUP: { drawing_box = false; if (box.width < 0) { box.x += box.width; box.width *= -1; } if (box.height<0) { box.y += box.height; box.height *= -1; } draw_box(image, box); } break; }}

HighGUI中创建滑动条的函数如下,前2个参数分别指定了滑动条的名字以及滑动条附属窗口的名字。随后的两个参数之一为value,它是一个整形指针,当滑动条被拖动时,OpenCV会自动将当前位置所代表的值传给指针指向的整数,另外一个参数count是一个整数值,为滑动条所能表示的最大值。最后一个参数是一个指向回掉函数的指针,当滑动条被拖动时,回掉函数会自动被调用。这跟鼠标事件的函数实现类似。回掉函数必须为CvTrackbarCallback格式。  

int cvCreateTrackbar(  const char* trackbar_name,   const char* window_name,   int* value,   int   count,   CvTrackerCallback  on_change);
void (*callback) (int position)
int cvGetTrackbarPos(    const char* trackbar_name,    const char* window_name);void cvSetTrackbarPos(    const char* trackbar_name,    const char* window_name,    int pos);
这两个函数可以用在程序的任何地方来读取或设置滑动条的值。


版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。

转载于:https://www.cnblogs.com/NoMasp/p/4786202.html

你可能感兴趣的文章
轻院1064加密字符
查看>>
ajx 发送json串(Request Payload格式)
查看>>
工资管理系统可行性分析人员分工
查看>>
BZOJ3781:小B的询问——题解
查看>>
BZOJ4557:[JLOI2016/SHOI2016]侦察守卫——题解
查看>>
通过Ajax和SpringBoot交互的示例
查看>>
可重入函数与不可重入函数
查看>>
[转] 深入剖析 linux GCC 4.4 的 STL string
查看>>
常用Web Service汇总(天气预报、时刻表等)
查看>>
resin app server安装总结
查看>>
抓取新浪新闻列表实例
查看>>
[04-06]鼠标悬停图片时,实现抖动效果
查看>>
抽象类和接口的区别
查看>>
react 自定义 TabBar 组件
查看>>
Palindrome Pairs
查看>>
项目测试随笔
查看>>
poj3261 -- Milk Patterns
查看>>
HttpClient获取返回类型为JSON或XML的数据
查看>>
python 自动化对比返回结果
查看>>
SQLite分页语句
查看>>