[英]drawing a rect with opencv on a frame
我有一個框架,並希望在specefic位置繪制一個矩形,矩形:
#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 <opencv\cv.h>
#include <opencv\highgui.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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.