在框架上使用 OpenCV 绘制矩形
drawing a rect with opencv on a frame
我有一个框架,想在特定的位置画一个矩形,一个矩形:
#include "opencv2/opencv.hpp"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<conio.h>
int main () {
cv::Mat frame = cv::imread("cmd.png");
cvRectangle(
&frame,
cvPoint(5,10),
cvPoint(20,30),
cvScalar(255,255,255)
);
cv::imshow("test " , frame);
while (cv::waitKey() != 23) ;
return 1;
}
wenn 我运行代码,我收到内存错误。
Unhandled exception at 0x000007fefd42caed in OpenCV_capture.exe: Microsoft C++
exception: cv::Exception at memory location 0x0018ead0..
知道我为什么会得到这个,我该如何解决它
你把C++ API和C API混为一谈。在"cv"命名空间中使用矩形函数而不是"cvRectangle":
cv::rectangle(
frame,
cv::Point(5, 10),
cv::Point(20, 30),
cv::Scalar(255, 255, 255)
);
此外,您正在尝试在未打开的窗口中显示图像:
int main() {
cv::namedWindow("test ");
// ...
如果图像未正确加载,这也可能导致错误,因为您随后尝试绘制到空图像上。
if (frame.data != NULL) {
// Image successfully loaded
// ...
此代码工作:
#include <opencvcv.h>
#include <opencvhighgui.h>
int main()
{
//Window
cvNamedWindow("Drawing",CV_WINDOW_AUTOSIZE);
//Image loading
IplImage* original=cvLoadImage("i.jpg");
if(Original==NULL )
{
puts("ERROR: Can't upload frame");
exit(0);
}
cvRectangle(original,cvPoint(100,50),cvPoint(200,200),CV_RGB(255,0,0),5,8);
//Showing the image
cvShowImage("Drawing",original);
cvWaitKey(0);
//CleanUp
cvReleaseImage(&original);
cvDestroyAllWindows();
}
相关文章:
- 如何使用 opencv 绘制绿色矩形?
- Opencv,在图像中的对象周围绘制一个框
- OPENCV C .在for循环中在不同的图像像素上绘制一个圆圈(应在每个循环运行时将图像打开)
- OPENCV-快速 简介:如何使用drawmatchesflags :: draw_rich_keypoints绘制关键
- 如何在Opencv中绘制匹配项
- OpenCV c++ 断言失败调用绘制轮廓
- 在OpenCV中绘制带有梯度颜色的线
- 在框架上使用 OpenCV 绘制矩形
- 如何在OpenCV中绘制线路
- 绘制凸度缺陷C OPENCV
- 如何在opencv中使用matlab c ++库绘制点
- 使用OpenCV教程中的任何一个进行人脸检测是否有任何函数可以计算绘制在人脸上的矩形的大小
- 从图像中裁剪椭圆形状,而不是在OpenCV中在内部绘制
- 使用 OpenCV C++绘制最大轮廓的凸包
- 使用Opencv/c++在Stream中的两点之间绘制aline
- 绘制opencv中多个移动对象的轨迹
- 如何在OpenFrameworks/OpenCV中使用HSV颜色绘制正方形
- OpenCV - 仅在绘制单应性时打印对象名称
- 使用 OpenCV 和 C++ 在图像中绘制投资回报率
- OpenCV 3.1 绘制轮廓 '(-215) npoints > 0'